Formatting free form data
Posted: Tue Feb 28, 2017 7:12 pm
Hello,
I am trying to format data which is currently spread across multiple rows in a dataset, and generate a simplified single line CSV output.
For example, (one of the formatting request is of) a sample IEBPTPCH output is given below; this is a portion of the merged dump of all Connect-Direct control-cards on a given LPAR:
VMEMBER NAME AAAAAAAA
V SUBMIT PROC=AAAAAAAXW &PNODE=YYY -
V &SNODE=MMM -
V &PATHNAME='C:\TEST' -
V &XLATE=YES -
V &DATATYPE=TEXT -
V &D1='TEST(+1)' -
V &DISP=(NEW,CATLG,DELETE) -
V &LRECL=60 -
V &RECFM=FB -
V &SPACE=CYL -
V &PQTY=10 -
V &SQTY=10
VMEMBER NAME AAAAAAAXW
VAAAAAAAXD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(TEST.TEST)'\ -
V SNODE
V EXIT
V EIF
VMEMBER NAME BBBBBBD
VBBBBBBD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(&SARG)'\ -
V SNODE
V EXIT
V EIF
VMEMBER NAME BBBBBBP
V SUBMIT PROC=BBBBBBW &PNODE=YYY -
V &SNODE=MMM -
V &PATHNAME='C:\TEST' -
V &XLATE=YES -
V &DATATYPE=TEXT -
V &D1='TEST(+1)' -
V &DISP=(NEW,CATLG,DELETE) -
V &LRECL=60 -
V &RECFM=FB -
V &SPACE=CYL -
V &PQTY=10 -
V &SQTY=10
VMEMBER NAME BBBBBBW
VBBBBBBD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(TEST.TEST)'\ -
V SNODE
V EXIT
V EIF
Requirement is to generate a single formatted record of the resolved values from this data, resolved here means any-data which is not passed as a symbolic substitution; for example &D1 is resolved as 'TEST(+1)', &PNODE is resolved as: 'YYY'.
Similarly there are other IEBPTPCH outputs which again spread through multiple lines, and a single formatted output is required to be generated.
All these are segregated on the basis of the 'MEMBER NAME'.
A pseudo-algorithm with *SORT would be very helpful for me; I can convert it into code.
My current thought process is to first get all the lines of data falling under a group in one single row, after which I can PARSE the same and format accordingly.
Now getting it into a single line is another big cookie.
Thank you.
I am trying to format data which is currently spread across multiple rows in a dataset, and generate a simplified single line CSV output.
For example, (one of the formatting request is of) a sample IEBPTPCH output is given below; this is a portion of the merged dump of all Connect-Direct control-cards on a given LPAR:
VMEMBER NAME AAAAAAAA
V SUBMIT PROC=AAAAAAAXW &PNODE=YYY -
V &SNODE=MMM -
V &PATHNAME='C:\TEST' -
V &XLATE=YES -
V &DATATYPE=TEXT -
V &D1='TEST(+1)' -
V &DISP=(NEW,CATLG,DELETE) -
V &LRECL=60 -
V &RECFM=FB -
V &SPACE=CYL -
V &PQTY=10 -
V &SQTY=10
VMEMBER NAME AAAAAAAXW
VAAAAAAAXD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(TEST.TEST)'\ -
V SNODE
V EXIT
V EIF
VMEMBER NAME BBBBBBD
VBBBBBBD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(&SARG)'\ -
V SNODE
V EXIT
V EIF
VMEMBER NAME BBBBBBP
V SUBMIT PROC=BBBBBBW &PNODE=YYY -
V &SNODE=MMM -
V &PATHNAME='C:\TEST' -
V &XLATE=YES -
V &DATATYPE=TEXT -
V &D1='TEST(+1)' -
V &DISP=(NEW,CATLG,DELETE) -
V &LRECL=60 -
V &RECFM=FB -
V &SPACE=CYL -
V &PQTY=10 -
V &SQTY=10
VMEMBER NAME BBBBBBW
VBBBBBBD PROCESS PNODE=&PNODE -
V SNODE=&SNODE
VSTEP1 COPY FROM (SNODE DSN=&PATHNAME DISP=SHR -
V SYSOPTS="XLATE(&XLATE) DATATYPE(&DATATYPE)") -
V TO (PNODE DSN=&D1 DISP=&DISP -
V DCB=(LRECL=&LRECL,RECFM=&RECFM,BLKSIZE=0) -
V SPACE=(CYL,(&PQTY,&SQTY),RLSE)) -
V CKPT=20K -
V COMPRESS EXTENDED
V IF (STEP1 = 0 ) THEN
VSTEP2 RUN JOB (DSN=WINNT) -
V SYSOPTS=\'PGM(C:\\BIN\\TEST.BAT) \ -
V \ARGS(TEST.TEST)'\ -
V SNODE
V EXIT
V EIF
Requirement is to generate a single formatted record of the resolved values from this data, resolved here means any-data which is not passed as a symbolic substitution; for example &D1 is resolved as 'TEST(+1)', &PNODE is resolved as: 'YYY'.
Similarly there are other IEBPTPCH outputs which again spread through multiple lines, and a single formatted output is required to be generated.
All these are segregated on the basis of the 'MEMBER NAME'.
A pseudo-algorithm with *SORT would be very helpful for me; I can convert it into code.
My current thought process is to first get all the lines of data falling under a group in one single row, after which I can PARSE the same and format accordingly.
Now getting it into a single line is another big cookie.
Thank you.