Your SlideShare is downloading. ×
Sort presentation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Sort presentation

868
views

Published on

IBM mainframe sort utility. Inspired by Kolusu.

IBM mainframe sort utility. Inspired by Kolusu.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
868
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SORT by RK
  • 2. AgendaSORT FLOWINCLUDE / OMITINRECJOINSUM / DUPKEYSEXIT Routines (MODS)OUTRECOUTFILOUTFIL ReportsDATE Operations
  • 3. 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.
  • 4. Basic Points Contd… 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 isinterrupted 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 theHEADER2 specification would extend beyond column 71. The X in column 72 is thecontinuation character. The literal string is continued in column 16 of the next card image.
  • 5. SORT JCL //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 /*SORTIN SORTOUTACCOUNT# MOBILE# STATUS DATE AMOUNT ACCOUNT# MOBILE# STATUS DATE AMOUNT----+----+----+----+----+----+----+---- ----+----+----+----+----+----+----+----10000001 5000001 0 011511 100.50 10000001 5000001 0 011511 100.5010000001 5000002 1 021512 050.50 10000001 5000002 1 021512 050.5010000001 5000003 2 011512 000.50 10000001 5000003 2 011512 000.5010000002 5100001 2 021512 111.50 10000002 5100001 2 021512 111.5010000002 5200002 1 021512 120.50 10000002 5200002 1 021512 120.5010000006 5600001 0 021512 100.50 10000006 5600001 0 021512 100.5010000003 5300001 0 021512 020.50 10000003 5300001 0 021512 020.50
  • 6. SORT FLOWBEFORE SORT SORT AFTER SORT SORTIN SUM / DUPKEYS SKIPREC E15 OUTREC JOIN SORT E35 INCLUDE/OMIT OUTFIL SORTOUT STOPAFT INREC
  • 7. STOPAFTSTOPAFT 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, anINCLUDE/OMIT statement, or the SKIPREC parameter. If STOPAFT=n has been specified on the SORT control statement as well asin 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. These100 will be send to next control of SORT for processing.
  • 8. SKIPRECSKIPREC 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 andINCLUDE/OMIT processing is begun. If SKIPREC=n has been specified on the SORT control statement as well asin 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 toSORT for processing.
  • 9. STOPAFT /SKIPREC//SORTCHK1 EXEC PGM=SORT//SORTIN DD *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 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
  • 10. INCLUDE / OMITINCLUDE/OMIT COND=ALL / NONE /COMPARISIONINCLUDE COND=((1,4,CH,EQ,C1995,OR,1,4,CH,EQ,C1996‘),AND,5,5,CH,EQ,CPARIS)INCLUDE COND=(1,4,CH,EQ,10,4,CH) OR (1,4,EQ,10,4),FORMAT=CHINCLUDE COND=(15,3,ZD,EQ,100,AND,20,1,CH,NE,X40)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(C1995,C1996‘) OR (1,40,SS,EQ,L(C1995,C1996‘)) Numeric CheckINCLUDE COND=(35,8,ZD,EQ,NUM)SORTIN (FB RECORD)----+----1----+----2----+----3----+----4----+----5----+1995PARIS1997 100 R1996LONDN1996 ANYTOWN1997CINCI1998 200 ANYTOWN1999INDIA1999 20120220 20120218Options vlscomp
  • 11. INRECThe INREC control statement reformats the input records. Use the INREC control statement to add, delete, or reformat fields before the records are sorted ormerged. Except for CONVERT, all the functions performed by the OUTREC control statement, such asinserting character strings or changing the data format of a numeric field, can also be performed bythe INREC control statement.Note: that INREC is performed after E15 exit processing and INCLUDE/OMIT control statementprocessing.INREC FIELDS=(1,15,20,5)SORTIN SORTOUT----+----1----+----2----+----3 ----+----1----+----2ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOTUVWXINREC 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
  • 12. 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 INDIANJ USANY USAPARISSORTOUT----+----1----+----2----+----3----+----4----+HYDERABAD CVG NO MATCHNJ CVG NEW JERSEYNY CVG NEW YORKPARIS CVG NO MATCH
  • 13. INREC contd… INREC FIELDS=(1,7,SFF,TO=ZD,9,7,UFF,TO=PD) * SIGNED FREE FORM FORMAT * UNSIGNED FREE FORM FORMAT SORTIN SORTOUT (HEX ON) ----+----1----+----2----+----3 ----+----1- -19.85 +20.05 000198L FFFFFFD0005 0001985020FINREC 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 TODAYS 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 TODAYS CHANGE 16:%4,JFY=(SHIFT=RIGHT)) * CHANGE AMOUNTSORT FIELDS=(1,4,CH,A) * SORT BY STOCK SYMBOLSORTIN SORTOUT----+----1----+--- ----+----1----+-----DIS,34.56,+1.09 DIS 34.56 + 1.09T,37.05,-.42 GOOG 449.12 -11.62GOOG,449.12,-11.62 T 37.05 - .42** If you don’t want to store just say % in PARSE
  • 14. JOIN Using JOIN you can extract and sort data from two different files. One file point toSORTJNF1 other point to SORTJNF2.The join files do not need to be presorted on the fields specified on theJOINKEYS 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 recordsfrom the two files, SORTJNF1 and SORTJNF2. The number of JOINKEYS fields and their lengths and sorted order (A or D) must bethe 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 JOINKEYSstatement cannot exceed 4080 bytes. For variable-length records, any JOINKEYS fields that are completely or partiallymissing will be padded with binary zeros when performing the comparison.
  • 15. JOIN Cntd..//SORTJNF1 DD * //SORTJNF2 DD *----+----1----+----2----+----3- ----+----1----+----2----+----3-000001 0310.00 12/01/2002 2178I 7454C JOSEPH SMITH NY000002 8055.22 12/02/2002 2123D 2111A JAMES JONES NJ000003 0310.00 12/05/2002 2178I 2178I JOHN JACKSON DE000004 0020.00 12/06/2002 2111A 2123D MARY LEE FLJOINKEYS 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) File1 File2SORT 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
  • 16. JOIN Cntd..//SORTJNF1 DD * //SORTJNF2 DD *----+----1----+----2----+----3- ----+----1----+----2----+----3-000001 0310.00 12/01/2002 2178I 7454C JOSEPH SMITH NY000002 8055.22 12/02/2002 2123D 2111A JAMES JONES NJ000003 0310.00 12/05/2002 2178I 2178I JOHN JACKSON DE000004 0020.00 12/06/2002 2111A 2123D MARY LEE FLJOINKEYS FILE=F1,FIELDS=(27,5,A) File1 File2JOINKEYS 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
  • 17. JOIN contd… File1 File2 File1 File2 File1 File2 File1 File2 Left Outer Join Right Outer Join Full Outer Join JOIN JOIN UNPAIRED,F1 JOIN UNPAIRED,F2 JOIN UNPAIRED UNPAIRED,ONLYJOIN 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,F2or simply:JOIN UNPAIREDYou have the option of discarding the paired records from a join and keeping only the unpaired ones.JOIN UNPAIRED,ONLY
  • 18. SUM The SUM control statement specifies that, whenever two records are found with equalsort control fields, the contents of their summary fields are to be added, the sum is to beplaced 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.SORT FIELDS=(1,3,CH,A),EQUALSSUM FIELDS=(7,4,ZD),XSUMSUM FIELDS=NONE,XSUMSORTIN: SORTOUT: SORTXSUM:----+----1-- ----+----1-- ----+----1--111 1 0001 1 111 1 0003 1 111 2 0001 2111 2 0001 2 222 1 0001 1 111 3 0001 3111 3 0001 3 333 1 0001 1 444 4 0001 4222 1 0001 1 444 3 0003 2 444 2 0001 2333 1 0001 1444 3 0001 2444 4 0001 4444 2 0001 2
  • 19. DUPKEYS The DUPKEYS control statement deletes all records with duplicate SORT controlfields and optionally replaces specified numeric fields in the retained records withcalculated sum, minimum, maximum, or average values from all records with equalcontrol fields. The deleted records can optionally be written to a separate output file (using XDUP).SORT FIELDS=(1,3,CH,A),EQUALSDUPKEYS SUM=(7,4),MIN=(5,1),MAX=(12,1),FORMAT=ZD,XDUPDUPKEYS FIELDS=NONE,XDUP SUM,MIN,MAX may not overlap each other. SORTIN: SORTOUT: SORTXDUP: ----+----1-- ----+----1-- ----+----1-- 111 1 0001 1 111 1 0003 3 111 2 0001 2 111 2 0001 2 222 1 0001 1 111 3 0001 3 111 3 0001 3 333 1 0001 1 444 4 0001 4 222 1 0001 1 444 2 0003 4 444 2 0001 2 333 1 0001 1 444 3 0001 2 444 4 0001 4 444 2 0001 2
  • 20. 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 …)
  • 21. 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)//*
  • 22. MODS Cobol Exit module Example.. NO SELECT STATEMENT FOR THE INPUT, HANDLED BY SYNCSORT01 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
  • 23. OUTRECThe OUTREC control statement reformats the output records. Use the OUTREC control statement to add, delete, or reformat fields after the records aresorted or merged.Including CONVERT, all the functions performed by the INREC control statement, such asinserting character strings or changing the data format of a numeric field, can also beperformed 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 ABCDEFGHIJKLMNOTUVWXOUTREC FIELDS=(5,9,ZD,PD,X,20,5),CONVERT * CONVERT FROM VB TO FBSORTIN SORTOUT (HEX ON)----+----1----+----2----+----3 ----+----1- 123456789RAMA ABCDEFGHI î̤ ABCDE 135794CCCCC 2468F012345
  • 24. 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:C00000),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:C00000)) SORTIN SORTOUT ----+----1---- ----+----1---- R1 1234E 862-3 R1 12345 00000 R2 582B3 2832C R2 00000 28323 R3 0521L 87103 R3 0521L 87103 R4 68200 9862S R4 68200 00000 R5 7123T 0032J R5 00000 0032J R6 X0521 72013 R6 00000 72013
  • 25. OUTREC Heres how you could change all low values (X00) to spaces (X40),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 spacesNote: By not using TRAN=ALTSEQ for the PD field, we avoid changing PD valuesincorrectly, such as from X000000001C (P1) to X404040401C (P404040401).
  • 26. OUTFILThe 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.
  • 27. OUTFIL Convert VB file to FB file and return return-code 4 when no recordsINCLUDE COND=(400,28,CH,EQ,CERROR SENDING TO ACT MANAGER,AND, 291,6,Y2W,EQ,YDATE1-1)SORT FIELDS=COPYOUTFIL FILES=01,VTOF,OUTREC=(01:192,14,15:C,, 16:400,28),NULLOFL=RC4** VTOF/CONVERT are same , FTOV is for FB to VB Editing Masks for Zone Decimal / Pack DecimalINCLUDE COND=(196,2,CH,EQ,CG2)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))
  • 28. 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,CACCTNG),FNAMES=OUT1 OUTFIL INCLUDE=(8,6,CH,EQ,CDVPMNT),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...
  • 29. OUTFILOUTFIL FTOV,VLTRIM=C*,OUTREC=(1,7,9:8,8)This OUTFIL control statement uses FTOV to convert fixed-length records tovariable 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 20OUTFIL VTOF,VLFILL=C*‘,OUTREC=(5,16)This OUTFIL control statement uses VTOF to convert variable-length records tofixed 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
  • 30. OUTFIL REPORTSJOINKEYS 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# ,CUSTOMERNAME ,ADD)SORT FIELDS=(7,13,CH,A)OUTFIL HEADER2=(INACTIVE CUSTOMERS,2/,CUST# ,CUSTOMER NAME,ADD)
  • 31. REPORTS cntd…
  • 32. REPORTS cntd…
  • 33. OUTFIL …
  • 34. DATE DATE1 – YYYYMMDD 5,Y2T Cyyddd or Zyyddd 6,Y2T Cyymmdd or Zyymmdd DATE2 – YYYYMM 7,Y4T Cccyyddd or Zccyyddd DATE3 – YYYYDDD 8,Y4T Cccyymmdd or Zccyymmdd 5,Y2W Cdddyy or Zdddyy DATE4 – yyyy-mm-dd-hh.mm.ss 6,Y2W Cmmddyy or Zmmddyy DT=(MDYor4) DTNS=(MDY) 7,Y4W Cdddccyy or Zdddccyy 8,Y4W Cmmddccyy or Zmmddccyy TOJUL, TOGREG 3,Y2U Pyyddd WEEKDAY=CHAR3/CHAR9/DIGIT1 4,Y2V Pyymmdd 4,Y4U Pccyyddd CHAR3 – ‘SUN’ 5,Y4V Pccyymmdd CHAR9 – ‘SUNDAY ‘ 3,Y2X Pdddyy 4,Y2Y Pmmddyy DIGIT1 – 1 4,Y4X Pdddccyy 5,Y4Y Pmmddccyy &DATEx and &DATEx(c) represent the current date as a character string (Cstring) to which a fieldcan be compared. &DATExP represents the current date as a decimal number (+n) to which a field can be compared. YDATEx represents the current date with a Y constant (Ystring) to which a field can be compared.
  • 35. DATE contd…* Convert a Pdddyy input date to a Cccyy/mm/dd output date *Convert Pdddccyy date can be edited to a Cccyy-ddd dateINREC BUILD=(21,3,Y2X,TOGREG=Y4T(/),X, OUTFIL BUILD=(1,4,Y4X(-))* Convert a Cccyymmdd input date to a Pccyyddd output date * Convert a Pdddyy input date to Cccyy/mm/dd42,8,Y4T,TOJUL=Y4U,X, INREC BUILD=(21,3,Y2X,TOGREG=Y4T(/),X,* Convert a Cmmddyy input date to a Cyymmdd output date •Convert a Cccyymmdd input date to Pccyyddd11,6,Y2W,TOGREG=Y2T) 42,8,Y4T,TOJUL=Y4U,X,* Convert a Cyyddd input date to a Cdd/mm/ccyy output date •Date CalculationOUTFIL BUILD=(92,5,Y2T,DT=(DM4/),X, (5,8,ZD,LE,&DATE1P,AND,5,8,ZD,GT,&DATE1P-14)* Convert a Pccyyddd input date to a Cmmddyy output date INREC BUILD=(53:32,4,Y4U,DTNS=(MDY)) 1,6,Y2W,TOJUL=Y4T,X, 1,6,Y2W,WEEKDAY=CHAR3,X,* Convert a Cmmddccyy date to a Cmmddccyy date. 9,7,Y4T,TOGREG=Y4T(/),X,OUTFIL BUILD=(34,8,Y4W,X, 9,7,Y4T,WEEKDAY=DIGIT1)* Convert a Pccyymmdd date to a Cccyy-mm-dd date. The input records might be as follows:13,5,Y4V,EDIT=(TTTT-TT-TT),X, 120409 1999014 051895 2003235* Convert a Cdddccyy date to a 4-byte BI dddccyy value. 999999 000000061,7,Y4W,TO=BI,LENGTH=4) 013099 1992343Convert a Zdddccyy date to a Cddd/ccyy date. The output records would be as follows:OUTFIL BUILD=(19,7,Y4W(/),X, 2009338 FRI 1999/01/14 5 2095138 WED 2003/08/23 7* Convert a Pccyymmdd date to a Cccyy-mm-dd date. 9999999 999 0000/00/00 043,5,Y4V(-)) 1999030 SAT 1992/12/08 3
  • 36. 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=*
  • 37. SORT FLOW
  • 38. SORT FLOW
  • 39. Questions ???