39
SORT by RK

Sort presentation

Embed Size (px)

DESCRIPTION

IBM mainframe sort utility. Inspired by Kolusu.

Citation preview

Page 1: Sort presentation

SORT

by RK

Page 2: Sort presentation

Agenda

SORT FLOW

INCLUDE / OMIT

INREC

JOIN

SUM / DUPKEYS

EXIT Routines (MODS)

OUTREC

OUTFIL

OUTFIL Reports

DATE Operations

Page 3: Sort presentation

Basic Points

The first byte of every fixed-length record is position 1, the second byte position 2, and so on.

Bytes 1 through 4 of variable-length records are reserved for the Record Descriptor Word (RDW). For these records, the first byte of the data portion is position 5.

When proper processing depends on data format, the format of the field must be specified.

The format of the field must be appropriate to the task. For example, only numeric fields can be SUMmed.

When all the fields have the same format, the format value can be specified just once through the FORMAT=f subparameter. The FORMAT=f subparameter cannot be used when the INCLUDE/OMIT parameter is specified on the OUTFIL control statement.

Identify a comment card image by placing an asterisk (*) in column 1. Comments can extend through column 80.

To add a comment to a control statement card image, leave one or more blanks after the last parameter or comma on the image and follow with the comment, which can extend through column 71.

Page 4: Sort presentation

Comment lines can be inserted between a control statement and its continuation by coding an asterisk (*) in column one.

COL. 72 ↓SORT FIELDS=(1,10,A,20,5,A,45,7,A),FORMAT=CH,STOPAFT=100, *COMMENT EQUALS

In the above example, no continuation character is required. The control statement is interrupted after a parameter-comma combination before column 72.

COL. 16 COL.72 ↓ ↓OUTFIL OUTREC=(1:10,8,30:40,10),HEADER2=(1:'CUSTOMER NUMBX ER',30:'ITEM NUMBER')

In this example, a continuation character is necessary because the literal string in the HEADER2 specification would extend beyond column 71. The 'X' in column 72 is the continuation character. The literal string is continued in column 16 of the next card image.

Basic Points Contd…

Page 5: Sort presentation

SORTOUT

ACCOUNT# MOBILE# STATUS DATE AMOUNT

----+----+----+----+----+----+----+----

10000001 5000001 0 011511 100.50

10000001 5000002 1 021512 050.50

10000001 5000003 2 011512 000.50

10000002 5100001 2 021512 111.50

10000002 5200002 1 021512 120.50

10000006 5600001 0 021512 100.50

10000003 5300001 0 021512 020.50

SORTIN

ACCOUNT# MOBILE# STATUS DATE AMOUNT

----+----+----+----+----+----+----+----

10000001 5000001 0 011511 100.50

10000001 5000002 1 021512 050.50

10000001 5000003 2 011512 000.50

10000002 5100001 2 021512 111.50

10000002 5200002 1 021512 120.50

10000006 5600001 0 021512 100.50

10000003 5300001 0 021512 020.50

//SORT EXEC PGM=SORT //SORTIN DD DISP=SHR,DSN=INPUT.FILE //SORTOUT DD DSN=OUTPUT.FILE, // DISP=(,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRKS,(40,20),RLSE)//SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * SORT FIELDS=COPY /*

SORT JCL

Page 6: Sort presentation

SORTIN

SKIPREC

INCLUDE/OMIT

INREC

STOPAFT

E15

JOIN SORT

OUTREC

E35

OUTFIL

SORTOUT

BEFORE SORT AFTER SORTSORT

SORT FLOW

SUM / DUPKEYS

Page 7: Sort presentation

STOPAFT

STOPAFT ParmSTOPAFT=n

STOPAFT=n (a decimal number) sorts/copies at most n records.

These will be the first n records after any input processing due to an E15, an INCLUDE/OMIT statement, or the SKIPREC parameter.

If STOPAFT=n has been specified on the SORT control statement as well as in the PARM field, the PARM specification will take precedence.

//SORT EXEC PGM=SORT,PARM=‘STOPAFT=100' or SORT FIELDS=COPY,STOPAFT=100

First 100 records will be taken and remaining records will be skipped. These 100 will be send to next control of SORT for processing.

Page 8: Sort presentation

SKIPREC

SKIPREC ParmSKIPREC=n

SKIPREC=n instructs the sort to skip a decimal number n of records beforesorting/copying the input file.

The records skipped are deleted from the input file before E15 and INCLUDE/OMIT processing is begun.

If SKIPREC=n has been specified on the SORT control statement as well as in the PARM field, the PARM specification will take precedence.

//SORT EXEC PGM=SORT,PARM='SKIPREC=100' or SORT FIELDS=COPY,SKIPREC=100

First 100 records will be skipped and remaining records will be send to SORT for processing.

Page 9: Sort presentation

STOPAFT /SKIPREC

//SORTCHK1 EXEC PGM=SORT //SORTIN DD * 111 1 0001 1 111 2 0001 2 111 3 0001 3 222 1 0001 1 333 1 0001 1 444 3 0001 2 444 4 0001 4 444 2 0001 2 //SORTOUT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1,3,CH,A),SKIPREC=02,STOPAFT=5 /*

SORTOUT------------111 3 0001 3222 1 0001 1333 1 0001 1444 3 0001 2444 4 0001 4

Page 10: Sort presentation

INCLUDE / OMIT

INCLUDE/OMIT COND=ALL / NONE /COMPARISION

INCLUDE COND=((1,4,CH,EQ,C'1995',OR,1,4,CH,EQ,C'1996‘),AND,5,5,CH,EQ,C'PARIS')

INCLUDE COND=(1,4,CH,EQ,10,4,CH) OR (1,4,EQ,10,4),FORMAT=CH

INCLUDE COND=(15,3,ZD,EQ,100,AND,20,1,CH,NE,X'40')

INCLUDE COND=(35,8,ZD,LE,&DATE1,AND,45,8,ZD,GT,&DATE1-14)

If you have multiple strings to search: (1,4,CH,EQ,L(C'1995',C'1996‘) OR (1,40,SS,EQ,L(C'1995',C'1996‘))

Numeric Check

INCLUDE COND=(35,8,ZD,EQ,NUM)

SORTIN (FB RECORD)----+----1----+----2----+----3----+----4----+----5----+1995PARIS1997 100 R1996LONDN1996 ANYTOWN1997CINCI1998 200 ANYTOWN1999INDIA1999 20120220 20120218

Options vlscomp

Page 11: Sort presentation

INREC

INREC FIELDS=(1,15,20,5)

SORTIN SORTOUT----+----1----+----2----+----3 ----+----1----+----2ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOTUVWX

INREC FIELDS=(1,4,5,9,ZD,PD,X,20,5) Variable Block (1,4 RECORD LENGTH)

SORTIN SORTOUT (HEX ON)----+----1----+----2----+----3 ----+----1----+ 123456789RAMA ABCDEFGHI î̤ ABCDE 135794CCCCC 2468F012345

The INREC control statement reformats the input records.

Use the INREC control statement to add, delete, or reformat fields before the records are sorted or merged.

Except for CONVERT, all the functions performed by the OUTREC control statement, such as inserting character strings or changing the data format of a numeric field, can also be performed by the INREC control statement.

Note: that INREC is performed after E15 exit processing and INCLUDE/OMIT control statement processing.

Page 12: Sort presentation

INREC contd…

INREC IFTHEN=(WHEN=INIT,BUILD=(1,15,C’CVG’,19,27)), IFTHEN=(WHEN=(1,2,CH,EQ,C’NJ’), BUILD=(1,30,C’NEW JERSEY’)), IFTHEN=(WHEN=(1,2,CH,EQ,C’NY’), OVERLAY=(31:C’NEW YORK ‘)), IFTHEN=(WHEN=NONE,OVERLAY=(31:C’NO MATCH ‘))

SORTIN----+----1----+----2----+----3----+----4----+----5----+HYDERABAD INDIA NJ USANY USAPARIS

SORTOUT----+----1----+----2----+----3----+----4----+HYDERABAD CVG NO MATCH NJ CVG NEW JERSEYNY CVG NEW YORK PARIS CVG NO MATCH

Page 13: Sort presentation

INREC contd…

INREC FIELDS=(1,7,SFF,TO=ZD,9,7,UFF,TO=PD) * SIGNED FREE FORM FORMAT * UNSIGNED FREE FORM FORMATSORTIN SORTOUT (HEX ON)----+----1----+----2----+----3 ----+----1- -19.85 +20.05 000198L FFFFFFD0005 0001985020F

INREC PARSE=(%1=(ENDBEFR=C',',FIXLEN=4), * STOCK SYMBOL (MAX LEN 4) %2=(ENDBEFR=C',',FIXLEN=6), * CURRENT PRICE (MAX LEN 6) %3=(FIXLEN=1), * SIGN OF TODAY'S CHANGE %4=(ENDBEFR=C' ',FIXLEN=5)), * CHANGE AMOUNT (MAX LEN 5)BUILD=(01:%1, * STOCK SYMBOL 07:%2,JFY=(SHIFT=RIGHT), * CURRENT PRICE 15:%3, * SIGN OF TODAY'S CHANGE 16:%4,JFY=(SHIFT=RIGHT)) * CHANGE AMOUNTSORT FIELDS=(1,4,CH,A) * SORT BY STOCK SYMBOL

SORTIN----+----1----+---DIS,34.56,+1.09T,37.05,-.42GOOG,449.12,-11.62

SORTOUT----+----1----+-----DIS 34.56 + 1.09GOOG 449.12 -11.62T 37.05 - .42

** If you don’t want to store just say % in PARSE

Page 14: Sort presentation

Using JOIN you can extract and sort data from two different files. One file point to SORTJNF1 other point to SORTJNF2. The join files do not need to be presorted on the fields specified on the JOINKEYS statement. By default, SyncSort will sort the records to the propersequence before performing the join operation.

The FIELDS parameter is required. It describes the fields to be used to match records from the two files, SORTJNF1 and SORTJNF2. The number of JOINKEYS fields and their lengths and sorted order (A or D) must be the same for both files, although their starting positions need not be the same.

Each JOINKEYS field may be anywhere within the record through column 32750,the maximum length of a field is 4080 bytes, and the sum of all fields on a JOINKEYS statement cannot exceed 4080 bytes. For variable-length records, any JOINKEYS fields that are completely or partially missing will be padded with binary zeros when performing the comparison.

JOIN

Page 15: Sort presentation

JOIN Cntd..

JOINKEYS FILE=F1,FIELDS=(27,5,A)JOINKEYS FILE=F2,FIELDS=(1,5,A)REFORMAT FIELDS=(F1:16,11,1,7,8,8,27,6,F2:7,14,21,3)SORT FIELDS=COPYOUTFIL FILES=01,HEADER2=('DATE ','TRANS# ','TRANAMT ', 'CUST# ','CUSTOMER NAME ','ADD')

DATE TRANS# TRANAMT CUST# CUSTOMER NAME ADD12/06/2002 000004 0020.00 2111A JAMES JONES NJ12/02/2002 000002 8055.22 2123D MARY LEE FL12/05/2002 000003 0310.00 2178I JOHN JACKSON DE12/01/2002 000001 0310.00 2178I JOHN JACKSON DE

//SORTJNF1 DD *----+----1----+----2----+----3-000001 0310.00 12/01/2002 2178I000002 8055.22 12/02/2002 2123D000003 0310.00 12/05/2002 2178I000004 0020.00 12/06/2002 2111A

//SORTJNF2 DD *----+----1----+----2----+----3-7454C JOSEPH SMITH NY2111A JAMES JONES NJ2178I JOHN JACKSON DE2123D MARY LEE FL

File1 File2

Page 16: Sort presentation

JOIN Cntd..

JOINKEYS FILE=F1,FIELDS=(27,5,A)JOINKEYS FILE=F2,FIELDS=(1,5,A)JOIN UNPAIRED,F2REFORMAT FIELDS=(F1:16,11,1,7,8,8,27,6,F2:7,14,21,3),FILL=C’ ‘SORT FIELDS=COPYOUTFIL FILES=01,HEADER2=('DATE ','TRANS# ','TRANAMT ', 'CUST# ','CUSTOMER NAME ','ADD')

DATE TRANS# TRANAMT CUST# CUSTOMER NAME ADD12/06/2002 000004 0020.00 2111A JAMES JONES NJ12/02/2002 000002 8055.22 2123D MARY LEE FL12/05/2002 000003 0310.00 2178I JOHN JACKSON DE12/01/2002 000001 0310.00 2178I JOHN JACKSON DE JOSEPH SMITH NY

//SORTJNF1 DD *----+----1----+----2----+----3-000001 0310.00 12/01/2002 2178I000002 8055.22 12/02/2002 2123D000003 0310.00 12/05/2002 2178I000004 0020.00 12/06/2002 2111A

//SORTJNF2 DD *----+----1----+----2----+----3-7454C JOSEPH SMITH NY2111A JAMES JONES NJ2178I JOHN JACKSON DE2123D MARY LEE FL

File1 File2

Page 17: Sort presentation

JOIN contd…

JOIN UNPAIRED [,F1] [,F2] [,ONLY]

To retain unpaired records from SORTJNF1 (a “left outer join”) in addition to all joined records, JOIN UNPAIRED,F1

To retain unpaired records from SORTJNF2 (a “right outer join”) in addition to all joined records.JOIN UNPAIRED,F2

To retain unpaired records from both SORTJNF1 and SORTJNF2 (a “full outer join”) in addition to all joined records, JOIN UNPAIRED,F1,F2

or simply:JOIN UNPAIRED

You have the option of discarding the paired records from a join and keeping only the unpaired ones. JOIN UNPAIRED,ONLY

Left Outer Join

JOIN UNPAIRED,F1

Full Outer Join

JOIN UNPAIREDJOIN UNPAIRED,ONLY

File1 File1 File1File2File2

File2

Right Outer Join

JOIN UNPAIRED,F2

File1 File2

Page 18: Sort presentation

SUM

SORT FIELDS=(1,3,CH,A),EQUALS SUM FIELDS=(7,4,ZD),XSUM SUM FIELDS=NONE,XSUM

SORTIN:----+----1--111 1 0001 1111 2 0001 2111 3 0001 3222 1 0001 1333 1 0001 1444 3 0001 2444 4 0001 4444 2 0001 2

SORTOUT:----+----1--111 1 0003 1222 1 0001 1333 1 0001 1444 3 0003 2

SORTXSUM:----+----1--111 2 0001 2111 3 0001 3444 4 0001 4444 2 0001 2

The SUM control statement specifies that, whenever two records are found with equal sort control fields, the contents of their summary fields are to be added, the sum is to be placed in one of the records and the other record is to be deleted.

If the EQUALS option is in effect the first record of summed records is kept.

If the NOEQUALS option is in effect, the record to be kept is unpredictable.

Page 19: Sort presentation

DUPKEYS

SORT FIELDS=(1,3,CH,A),EQUALS DUPKEYS SUM=(7,4),MIN=(5,1),MAX=(12,1),FORMAT=ZD,XDUPDUPKEYS FIELDS=NONE,XDUP

SUM,MIN,MAX may not overlap each other.

SORTIN:----+----1--111 1 0001 1111 2 0001 2111 3 0001 3222 1 0001 1333 1 0001 1444 3 0001 2444 4 0001 4444 2 0001 2

SORTOUT:----+----1--111 1 0003 3222 1 0001 1333 1 0001 1444 2 0003 4

SORTXDUP:----+----1--111 2 0001 2111 3 0001 3444 4 0001 4444 2 0001 2

The DUPKEYS control statement deletes all records with duplicate SORT controlfields and optionally replaces specified numeric fields in the retained records with calculated sum, minimum, maximum, or average values from all records with equal control fields.

The deleted records can optionally be written to a separate output file (using XDUP).

Page 20: Sort presentation

MODS (EXIT module…)

MODS E15=(E15COBOL,9999,MODLIB,C), E35=(E35COBOL,999999,STEPLIB,C)

An E15 exit is the first exit routine. E15COBOL is the member name of the routine,which requires 9999 bytes in main storage and resides in a library referenced by the DDstatement named MODLIB. The routine does not require link-editing.

An E35 exit is the third exit routine. E35COBOL is the member name of the routine,which requires 999999 bytes in main storage and resides in a library referenced by the DDstatement named STEPLIB. This routine is a COBOL exit which has been link-editedbefore execution time.

C The C value identifies a COBOL exit routine. COBOL exits must be link-edited before execution time. Only COBOL E15 and E35 exits can be specified.

E The E value identifies a C exit routine. C exits must be link-edited before execution time. Only C E15 and/or E35 exits can be specified.

X The X value identifies a REXX exit routine. Only REXX E15 and E35 exits can be specified.

You can name the referenced DD name as you wish (MODLIB / STEPLIB / RKLIB …)

Page 21: Sort presentation

MODS (EXIT module example…)

//COBOLSRT EXEC PGM=SORT //STEPLIB DD DSN=PROD.LOADLIB.MCEL,DISP=SHR //SORTIN DD DISP=SHR,DSN=SORT.INPUT.FILE//SORTOUT DD DSN=SORT.OUTPUT.FILE,// DISP=(,CATLG,DELETE), // SPACE=(CYL,(10,10),RLSE), // DCB=(SUP.ALL,RECFM=VB,LRECL=972),UNIT=SYSDA//SYSIN DD * SORT FIELDS=COPY MODS E35=(E35COBOL,999999,STEPLIB,C) OUTREC FIELDS=(01,250,47X) //*

//REXXSORT EXEC PGM=SORT //MODLIB DD DSN=MCELD.R0009H1.CLIST,DISP=SHR //SYSTSPRT DD SYSOUT=*,DCB=(RECFM=FB,LRECL=297) //SYSOUT DD SYSOUT=* //SORTIN DD DSN=MCELD.R0009H1.REC250,DISP=SHR //SORTOUT DD DSN=MCELD.R0009H1.REC297,DISP=(,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(2,2),RLSE) //SYSIN DD * SORT FIELDS=COPY MODS E15=(E15COBOL,336000,MODLIB,C) OUTREC FIELDS=(01,250,47X) //*

Page 22: Sort presentation

MODS Cobol Exit module Example..

NO SELECT STATEMENT FOR THE INPUT, HANDLED BY SYNCSORT

01 EXIT-STATUS PIC 9(08) COMP. 88 FIRST-RECORD VALUE 00. 88 NORMAL VALUE 04. 88 LAST-RECORD VALUE 08.

01 RECORD-FROM-SORT. 05 INPUT-RECORD OCCURS 1 TO 968 TIMES DEPENDING ON INPUT-LENGTH PIC X(01). 01 RECORD-TO-SORT. 05 OUTPUT-RECORD OCCURS 1 TO 968 TIMES DEPENDING ON OUTPUT-LENGTH PIC X(01). 01 IN-BUF PIC X(01). 01 DUMMY PIC X(01). 01 INPUT-LENGTH PIC 9(08) COMP.01 OUTPUT-LENGTH PIC 9(08) COMP.

PROCEDURE DIVISION USING EXIT-STATUS, RECORD-FROM-SORT, RECORD-TO-SORT, IN-BUF, DUMMY, INPUT-LENGTH, OUTPUT-LENGTH

Page 23: Sort presentation

OUTREC

The OUTREC control statement reformats the output records.

Use the OUTREC control statement to add, delete, or reformat fields after the records are sorted or merged.

Including CONVERT, all the functions performed by the INREC control statement, such as inserting character strings or changing the data format of a numeric field, can also be performed by the OUTREC control statement.

Note: that OUTREC is performed before E35 exit processing.

OUTREC FIELDS=(1,15,20,5)

SORTIN SORTOUT----+----1----+----2----+----3 ----+----1----+----2ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOTUVWX

OUTREC FIELDS=(5,9,ZD,PD,X,20,5),CONVERT * CONVERT FROM VB TO FB

SORTIN SORTOUT (HEX ON)----+----1----+----2----+----3 ----+----1- 123456789RAMA ABCDEFGHI î̤ ABCDE 135794CCCCC 2468F012345

Page 24: Sort presentation

OUTREC

SORT FIELDS=COPY * ENSURE A VALID POSITIVE ZD VALUE IN 4-8 HAS AN F SIGN. OUTREC IFTHEN=(WHEN=(4,5,ZD,EQ,NUM), OVERLAY=(4:4,5,ZD,TO=ZDF,LENGTH=5),HIT=NEXT), * REPLACE AN INVALID ZD VALUE IN 4-8 WITH 00000. IFTHEN=(WHEN=(4,5,ZD,NE,NUM), OVERLAY=(4:C'00000'),HIT=NEXT), * ENSURE A VALID POSITIVE ZD VALUE IN 10-14 HAS AN F SIGN. IFTHEN=(WHEN=(10,5,ZD,EQ,NUM), OVERLAY=(10:10,5,ZD,TO=ZDF,LENGTH=5),HIT=NEXT), * REPLACE AN INVALID ZD VALUE IN 10-14 WITH 00000. IFTHEN=(WHEN=(10,5,ZD,NE,NUM), OVERLAY=(10:C'00000'))

SORTIN----+----1----R1 1234E 862-3R2 582B3 2832CR3 0521L 87103R4 68200 9862SR5 7123T 0032JR6 X0521 72013

SORTOUT----+----1----R1 12345 00000R2 00000 28323R3 0521L 87103R4 68200 00000R5 00000 0032JR6 00000 72013

Page 25: Sort presentation

OUTREC

ALTSEQ CODE=(0040)OUTREC FIELDS=(1,2,TRAN=ALTSEQ, CH - change zeros to spaces 21,5, PD field - no change 26,55,TRAN=ALTSEQ) CH - change zeros to spaces

Here's how you could change all low values (X'00') to spaces (X'40'),

Note: By not using TRAN=ALTSEQ for the PD field, we avoid changing PD values incorrectly, such as from X'000000001C' (P'1') to X'404040401C' (P'404040401').

Page 26: Sort presentation

OUTFIL

The OUTFIL control statement describes the output file(s). It is required to accomplishthese three tasks:

Create multiple output files. The OUTFIL parameters associated with this task areCONVERT, ENDREC, FILES, FNAMES, FTOV, INCLUDE/OMIT, NULLOFL,OUTREC, REPEAT, SAMPLE, SAVE, SPLIT, SPLITBY, SPLIT1R, STARTREC,VLFILL, and VLTRIM.

Use the Sort Writer facility. The OUTFIL parameters associated with this task areHEADER1, HEADER2, LINES, NODETAIL, REMOVECC, SECTIONS, TRAILER1,and TRAILER2.

Reformat records after E35 processing. The OUTFIL parameter associated with thistask is OUTREC.

Page 27: Sort presentation

OUTFIL

Editing Masks for Zone Decimal / Pack Decimal

INCLUDE COND=(196,2,CH,EQ,C'G2') SORT FIELDS=(196,2,CH,A,214,2,CH,A) SUM FIELDS=(51,7,ZD,207,7,PD) OUTFIL FILES=01,OUTREC=(01:196,2,3:C',',04:214,2,6:C',', 07:51,7,ZD,EDIT=(TTTTTTT.TT),17:C',', 18:207,7,PD,EDIT=(TTTTTTTTTT.TTT))

Convert VB file to FB file and return return-code 4 when no records

INCLUDE COND=(400,28,CH,EQ,C'ERROR SENDING TO ACT MANAGER',AND, 291,6,Y2W,EQ,Y'DATE1'-1) SORT FIELDS=COPY OUTFIL FILES=01,VTOF,OUTREC=(01:192,14,15:C',', 16:400,28),NULLOFL=RC4 ** VTOF/CONVERT are same , FTOV is for FB to VB

Page 28: Sort presentation

OUTFIL

//SORTIN DD DSN=Y897797.INPUT3,DISP=OLD//OUT1 DD DSN=Y897797.SUBSET1,DISP=(NEW,CATLG)//OUT2 DD DSN=Y897797.SUBSET2,DISP=(NEW,CATLG)//OUT3 DD DSN=Y897797.SUBSET3,DISP=(NEW,CATLG)//SYSIN DD * SORT FIELDS=COPY OUTFIL INCLUDE=(8,6,CH,EQ,C'ACCTNG'),FNAMES=OUT1 OUTFIL INCLUDE=(8,6,CH,EQ,C'DVPMNT'),FNAMES=OUT2 OUTFIL SAVE,FNAMES=OUT3//*

Y897797.SUBSET1 (OUT1 DD)J2 ACCTNGX52 ACCTNG...Y897797.SUBSET2 (OUT2 DD)P16 DVPMNTA51 DVPMNT...Y897797.SUBSET3 (OUT3 DD)R27 RESRCHQ51 ADMIN...

Page 29: Sort presentation

OUTFIL

OUTFIL FTOV,VLTRIM=C'*',OUTREC=(1,7,9:8,8)

This OUTFIL control statement uses FTOV to convert fixed-length records to variable length records and VLTRIM to remove the specified type of trailing bytes (in this case, asterisks).

Input Output Record LengthRecords Records (with 4-byte RDW)----+----1----+- +----1----+----2RECORD1 ABC***** RECORD1 ABC 15RECORD2 ABCDEF** RECORD2 ABCDEF 18RECORD3 ABC****Z RECORD3 ABC****Z 20

OUTFIL VTOF,VLFILL=C'*‘,OUTREC=(5,16)

This OUTFIL control statement uses VTOF to convert variable-length records to fixed length records and VLFILL to fill the specified type of trailing bytes (in this case, asterisks).

Input Output Record LengthRecords Records +----1----+----2 ----+----1----+-RECORD1 ABC RECORD1 ABC***** 16RECORD2 ABCDEF RECORD2 ABCDEF** 16RECORD3 ABC****Z RECORD3 ABC****Z 16

Page 30: Sort presentation

OUTFIL REPORTS

JOINKEYS FILE=F1,FIELDS=(27,5,A)JOINKEYS FILE=F2,FIELDS=(1,5,A)REFORMAT FIELDS=(F1:16,11,1,7,8,8,27,6,F2:7,14,21,3)SORT FIELDS=COPYOUTFIL FILES=01,HEADER2=('DATE ','TRAN# ','TRANAMT ','CUST# ','CUSTOMER NAME ','ADD')

SORT FIELDS=(7,13,CH,A)OUTFIL HEADER2=('INACTIVE CUSTOMERS',2/,'CUST# ','CUSTOMER NAME','ADD')

Page 31: Sort presentation

REPORTS cntd…

Page 32: Sort presentation

REPORTS cntd…

Page 33: Sort presentation

OUTFIL …

Page 34: Sort presentation

DATE1 – YYYYMMDD

DATE2 – YYYYMM

DATE3 – YYYYDDD

DATE4 – yyyy-mm-dd-hh.mm.ss

DT=(MDYor4) DTNS=(MDY)

TOJUL, TOGREG

WEEKDAY=CHAR3/CHAR9/DIGIT1

CHAR3 – ‘SUN’

CHAR9 – ‘SUNDAY ‘

DIGIT1 – 1

5,Y2T C'yyddd' or Z'yyddd'6,Y2T C'yymmdd' or Z'yymmdd'7,Y4T C'ccyyddd' or Z'ccyyddd'8,Y4T C'ccyymmdd' or Z'ccyymmdd'5,Y2W C'dddyy' or Z'dddyy'6,Y2W C'mmddyy' or Z'mmddyy'7,Y4W C'dddccyy' or Z'dddccyy'8,Y4W C'mmddccyy' or Z'mmddccyy'3,Y2U P'yyddd'4,Y2V P'yymmdd'4,Y4U P'ccyyddd'5,Y4V P'ccyymmdd'3,Y2X P'dddyy'4,Y2Y P'mmddyy'4,Y4X P'dddccyy'5,Y4Y P'mmddccyy'

DATE

&DATEx and &DATEx(c) represent the current date as a character string (C'string') to which a field can be compared.

&DATExP represents the current date as a decimal number (+n) to which a field can be compared.

Y'DATEx' represents the current date with a Y constant (Y'string') to which a field can be compared.

Page 35: Sort presentation

* Convert a P'dddyy' input date to a C'ccyy/mm/dd' output dateINREC BUILD=(21,3,Y2X,TOGREG=Y4T(/),X,

* Convert a C'ccyymmdd' input date to a P'ccyyddd' output date42,8,Y4T,TOJUL=Y4U,X,

* Convert a C'mmddyy' input date to a C'yymmdd' output date11,6,Y2W,TOGREG=Y2T)

* Convert a C'yyddd' input date to a C'dd/mm/ccyy' output dateOUTFIL BUILD=(92,5,Y2T,DT=(DM4/),X,

* Convert a P'ccyyddd' input date to a C'mmddyy' output date53:32,4,Y4U,DTNS=(MDY))

* Convert a C'mmddccyy' date to a C'mmddccyy' date.OUTFIL BUILD=(34,8,Y4W,X,

* Convert a P'ccyymmdd' date to a C'ccyy-mm-dd' date.13,5,Y4V,EDIT=(TTTT-TT-TT),X,

* Convert a C'dddccyy' date to a 4-byte BI dddccyy value.61,7,Y4W,TO=BI,LENGTH=4)

Convert a Z'dddccyy' date to a C'ddd/ccyy' date.OUTFIL BUILD=(19,7,Y4W(/),X,

* Convert a P'ccyymmdd' date to a C'ccyy-mm-dd' date.43,5,Y4V(-))

*Convert P'dddccyy' date can be edited to a C'ccyy-ddd' date OUTFIL BUILD=(1,4,Y4X(-))

* Convert a P'dddyy' input date to C'ccyy/mm/dd' INREC BUILD=(21,3,Y2X,TOGREG=Y4T(/),X,

•Convert a C'ccyymmdd' input date to P'ccyyddd' 42,8,Y4T,TOJUL=Y4U,X,

•Date Calculation(5,8,ZD,LE,&DATE1P,AND,5,8,ZD,GT,&DATE1P-14)

INREC BUILD=(1,6,Y2W,TOJUL=Y4T,X,1,6,Y2W,WEEKDAY=CHAR3,X,9,7,Y4T,TOGREG=Y4T(/),X,9,7,Y4T,WEEKDAY=DIGIT1)

The input records might be as follows:120409 1999014051895 2003235999999 0000000013099 1992343

The output records would be as follows:2009338 FRI 1999/01/14 52095138 WED 2003/08/23 79999999 999 0000/00/00 01999030 SAT 1992/12/08 3

DATE contd…

Page 36: Sort presentation

Accessing DB2 table

You can access DB2 tables using SORT. But you can issue only SELECT statement.

//SORT EXEC PGM=SYNCSORT,PARM='DB2=D2P2' //STEPLIB DD DSN=SYS.DMSS.DB2D2P2.SDSNLOAD,DISP=SHR //SORTOUT DD SYSOUT=* //SORTDBIN DD * SELECT ACRONYM, TRANS_CD_CLASS, TRANS_CD_TYPE, TRANS_CD_SUBTYPE, TRANS_CD_PRORATE, REVENUE_CD, REVENUE_TEXT FROM CSGDB2A.BTA3_TRANS_REV WHERE ACRONYM = 'CBP'; /* //SYSIN DD * SORT FIELDS=COPY /* //SYSOUT DD SYSOUT=*

Page 37: Sort presentation

SORT FLOW

Page 38: Sort presentation

SORT FLOW

Page 39: Sort presentation

Questions ???