csv 2 fixed with non consistant amount fileds
Posted:
Fri Oct 07, 2011 12:08 am
by AKDEARAGON
My problem is Im taking amount fields that some times have 2 decimal places and some times not but need consistancy. I have 2 columns back to back in middle of a file. I got first column to work not not always on second column. Note that the '.' between fields all look like periods but different when looked at hex. I don't have problem with that
input example
99.X.155.04.172.Y.Y
99.X.143.171.N.N
99.X.2.2.N.N
99.X.154.84.172.N.N
99.X.166.166.N.N
need output to look like the following
99 X 155.04 172.00 Y Y
99 X 143.00 171.00 N N
99 X 2.00 2.00 N N
99 X 154.84 172.00 N N
99 X 166.00 166.00 N N
I'M USING 2 STEPST:
INREC PARSE=(%00=(ENDBEFR=X'05',FIXLEN=06), SKIP LOT OF LINES
%35=(ENDBEFR=X'05',FIXLEN=02),
%36=(ENDBEFR=X'05',FIXLEN=01),
%37=(ENDBEFR=X'05',FIXLEN=06), THIS IS 1ST AMOUNT
%38=(ENDBEFR=X'05',FIXLEN=06), THIS IS 2ND AMOUNT
%39=(ENDBEFR=X'05',FIXLEN=01),
%40=(ENDBEFR=X'05',FIXLEN=01),
BUILD=(%00,JFY=(SHIFT=RIGHT,LEAD=C'0'), SKIP DOWN TO BUILD
%35,JFY=(SHIFT=RIGHT,LEAD=C'0'),
%36,
%37,
%38,
%39%40
NEXT STEP TO HANDLE THE AMOUNT COLUMNS:
SORT FIELDS=COPY
OUTREC OVERLAY=(1:1,396,TRAN=LTOU)
INREC IFTHEN=(WHEN=(308,6,SS,NE,C'.'),
OVERLAY=(308:308,3,UFF,EDIT=(TTT),311:C'.',312:C'00'))
OUTREC FIELDS=(308,6,UFF,EDIT=(TTT.TT)))
Re: csv 2 fixed with non consistant amount fileds
Posted:
Wed Oct 12, 2011 5:14 am
by AKDEARAGON
Ok I changed to look more like what you showed Frank, but I get this error:
ICE002I 0 DUPLICATE OR CONFLICTING OPTION STATEMENT
ICE126A 2 INCONSISTENT REFORMATTING FOR *INREC : REASON CODE 04, IFTHEN 1
my entire code looks like :
//SORT0 EXEC PGM=SORT
//SORTIN DD DSN=xxxx,DISP=SHR
//SORTOUT DD DSN=ddddd,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE),
// DCB=(LRECL=410,BLKSIZE=0,RECFM=FB)
//SYSSORT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SORTMSG DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OPTION SKIPREC=1
ALTSEQ CODE=(40F0)
INREC IFTHEN=(WHEN=INIT,
PARSE=(%00=(ENDBEFR=X'05',FIXLEN=06),
%01=(ENDBEFR=X'05',FIXLEN=20),
%02=(ENDBEFR=X'05',FIXLEN=02),
%03=(ENDBEFR=X'05',FIXLEN=50),
%04=(ENDBEFR=X'05',FIXLEN=06),
%05=(ENDBEFR=X'05',FIXLEN=10),
%06=(ENDBEFR=X'05',FIXLEN=15),
%07=(ENDBEFR=X'05',FIXLEN=35),
%08=(ENDBEFR=X'05',FIXLEN=35),
%09=(ENDBEFR=X'05',FIXLEN=35),
%10=(ENDBEFR=X'05',FIXLEN=08),
%11=(ENDBEFR=X'05',FIXLEN=30),
%12=(ENDBEFR=X'05',FIXLEN=05),
%13=(ENDBEFR=X'05',FIXLEN=10),
%14=(ENDBEFR=X'05',FIXLEN=01),
%15=(ENDBEFR=X'05',FIXLEN=01),
%16=(ENDBEFR=X'05',FIXLEN=02),
%17=(ENDBEFR=X'05',FIXLEN=02),
%18=(ENDBEFR=X'05',FIXLEN=01),
%19=(ENDBEFR=X'05',FIXLEN=01),
%20=(ENDBEFR=X'05',FIXLEN=08),
%21=(ENDBEFR=X'05',FIXLEN=10),
%22=(ENDBEFR=X'05',FIXLEN=02),
%23=(ENDBEFR=X'05',FIXLEN=10),
%24=(ENDBEFR=X'05',FIXLEN=02),
%25=(ENDBEFR=X'05',FIXLEN=01),
%26=(ENDBEFR=X'05',FIXLEN=02),
%27=(ENDBEFR=X'05',FIXLEN=02),
%28=(ENDBEFR=X'05',FIXLEN=01),
%29=(ENDBEFR=X'05',FIXLEN=06),
%30=(ENDBEFR=X'05',FIXLEN=06),
%31=(ENDBEFR=X'05',FIXLEN=01),
%32=(ENDBEFR=X'05',FIXLEN=01),
%33=(ENDBEFR=X'05',FIXLEN=01),
%34=(ENDBEFR=X'05',FIXLEN=01),
%35=(ENDBEFR=X'05',FIXLEN=01),
%36=(ENDBEFR=X'05',FIXLEN=01),
%37=(ENDBEFR=X'05',FIXLEN=01),
%38=(ENDBEFR=X'05',FIXLEN=01),
%39=(ENDBEFR=X'05',FIXLEN=01),
%40=(ENDBEFR=X'05',FIXLEN=01),
%41=(ENDBEFR=X'05',FIXLEN=01),
%42=(ENDBEFR=X'05',FIXLEN=01),
%43=(ENDBEFR=X'05',FIXLEN=01),
%44=(ENDBEFR=X'05',FIXLEN=10),
%45=(ENDBEFR=X'05',FIXLEN=01),
%46=(ENDBEFR=X'05',FIXLEN=01),
%47=(ENDBEFR=X'05',FIXLEN=04),
%48=(ENDBEFR=X'05',FIXLEN=01),
%49=(ENDBEFR=X'05',FIXLEN=01),
%50=(ENDBEFR=X'05',FIXLEN=04),
%51=(ENDBEFR=X'05',FIXLEN=04),
%52=(ENDBEFR=X'05',FIXLEN=04),
%53=(ENDBEFR=X'05',FIXLEN=01),
%54=(ENDBEFR=X'05',FIXLEN=01),
%55=(ENDBEFR=X'05',FIXLEN=01),
%56=(ENDBEFR=X'05',FIXLEN=01),
%57=(ENDBEFR=X'05',FIXLEN=35),
%58=(ENDBEFR=X'05',FIXLEN=01),
%59=(ENDBEFR=X'05',FIXLEN=01)),
BUILD=(1:%00,7:%01,27:%02,29:%03,79:%04,85:%05,95:%06,
110:%07,145:%08,180:%09,215:%10,223:%11,253:%12,258:%13,
265:%14,266:%15,267:%16,269:%17,271:%18,272:%19,273:%20,
283:%21,293:%22,295:%23,305:%24,307:%25,308:%26,310:%27,
312:%28,313:%29,319:%30,325:%31,326:%32,327:%33,328:%34,
329:%35,330:%36,331:%37,332:%38,333:%39,334:%40,335:%41,
336:%42,337:%43,338:%44,348:%45,349:%46,350:%47,354:%48,
355:%49,356:%50,360:%51,364:%52,368:%53,369:%54,370:%55,
371:%56,372:%57,407:%58,408:%59)),
IFTHEN=(WHEN=INIT,
PARSE=(%60=(ABSPOS=313,ENDBEFR=C'.',ENDBEFR=C' ',FIXLEN=3),
%61=(FIXLEN=2),
%62=(ABSPOS=319,ENDBEFR=C'.',ENDBEFR=C' ',FIXLEN=3),
%63=(FIXLEN=2)),
OVERLAY=(313:%60,JFY=(SHIFT=RIGHT),C'.',%61,TRAN=ALTSEQ,
319:%62,JFY=(SHIFT=RIGHT),C'.',%63,TRAN=ALTSEQ))
I know I can get rid of 1st error by usion option copy or option skiprec=1 but the 2nd one I don't know were to start.