z/OS DFSORT Application Programming Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example 9. Sort with the extended parameter list interface

z/OS DFSORT Application Programming Guide
SC23-6878-00

INPUT
Fixed-length records from E15
OUTPUT
Blocked fixed-length records on SYSDA
WORK DATA SETS
Dynamically allocated
USER EXITS
E15
FUNCTIONS/OPTIONS
OMIT, FILSZ, RESINV, DYNALLOC

The JCL for running program MYSORT, and highlights of the code used by MYSORT to invoke DFSORT with the extended parameter list, are shown below. For purposes of illustration, assume that none of the standard installation defaults for batch program invocation of DFSORT have been changed by the site.

//EXAMP    JOB A400,PROGRAMMER                                  01
//STEP1    EXEC PGM=MYSORT                                      02
//SYSOUT   DD SYSOUT=C                                          03
//MSGOUT   DD SYSOUT=C                                          04
//STEPLIB  DD DSN=A123456.LOAD,DISP=SHR                         05
//SORTOUT  DD DSN=&&OUTPUT,DISP=(,PASS),UNIT=SYSDA,             06
//  SPACE=(CYL,(8,4))                                           07
//SORTCNTL DD *                                                 08
* Update file size estimate                                     09
  OPTION FILSZ=E30000                                           10
-----------------------------------------------------------------------

-----------------------------------------------------------------------
MYSORT CSECT                                                    11
       .
       .
       .
       LA   R1,PL1            SET ADDRESS OF PARAMETER LIST     12
*                              TO BE PASSED TO DFSORT           13
       ST   R2,PL4            SET ADDRESS OF GETMAINED AREA     14
*                              TO BE PASSED TO E15              15
       LINK EP=SORT           INVOKE DFSORT                     16
       .
       .
       .
PL1    DC   A(CTLST)          ADDRESS OF CONTROL STATEMENTS     17
PL2    DC   A(E15)            ADDRESS OF E15 ROUTINE            18
PL3    DC   A(0)              NO E35 ROUTINE                    19
PL4    DS   A                 USER EXIT ADDRESS CONSTANT        20
PL5    DC   F'-1'             INDICATE END OF LIST              21
CTLST  DS   0H                CONTROL STATEMENTS AREA           22
       DC   AL2(CTL2-CTL1)    LENGTH OF CHARACTER STRING        23
CTL1   DC   C' SORT FIELDS=(5,8,CSF,A)'                         24
       DC   C' RECORD TYPE=F,LENGTH=80 '                        25
       DC   C' OPTION FILSZ=E25000,DYNALLOC,'                   26
       DC   C'RESINV=8000 '                                     27
       DC   C' OMIT FORMAT=CSF,COND=(5,8,EQ,13,8) '             28
CTL2   EQU  *                                                   29
OUT    DCB  DDNAME=MSGOUT,...                                   30
E15    DS   0H                E15 ROUTINE                       31
       .
       .
       .
       L    R2,4(,R1)         GET ADDRESS OF GETMAINED AREA     32
       .
       .
       .
       BR   R14               RETURN TO DFSORT                  33
       .
       .
       .
Line
Explanation
01
JOB statement. Introduces this job to the operating system.
02
EXEC statement. Calls a program named MYSORT that in turn calls DFSORT.
03
SYSOUT DD statement. Directs DFSORT messages and control statements to SYSOUT class C.
04
MSGOUT DD statement. Directs MYSORT messages to SYSOUT class C.
05
STEPLIB DD statement. Specifies the load library that contains MYSORT.
06-07
SORTOUT DD statement. The output data set is temporary and is to be allocated on SYSDA. Because SORTIN is not used, DFSORT sets the RECFM and LRECL from the RECORD statement and sets the BLKSIZE to the LRECL (unblocked records).
08
SORTCNTL DD statement. DFSORT control statements follow. Statements in SORTCNTL override or supplement statements passed by MYSORT in the extended parameter list it uses.
09
Comment statement. Printed but otherwise ignored.
10
OPTION statement. FILSZ=E30000 specifies an estimate of 30000 records, overriding FILSZ=E25000 in the OPTION statement of the extended parameter list. Because the E15 routine supplies all of the input records, DFSORT will not be able to determine the file size accurately; therefore, specifying FILSZ can make a significant difference in work space optimization when an E15 routine supplies all of the input records. It's important to change the FILSZ value whenever the number of input records increases significantly.
11
This is the start of program MYSORT. Assume that it GETMAINs a work area, saves its address in register 2, and initializes it with information to be used by the E15 routine.
12-13
MYSORT places the address of the extended parameter list to be passed to DFSORT in register 1.
14-15
MYSORT places the address of the GETMAINed work area in the user exit address constant field in the extended parameter list. DFSORT will pass this address to the E15 routine (in the second word of the E15 parameter list) when it is entered.
16
MYSORT calls DFSORT by it's alias SORT.
17-21
The extended parameter list specifies: the address of the control statements area, the address of the E15 routine, that no E35 routine is present, and the address of the GETMAINed work area. F'-1' indicates the end of the extended parameter list. Subsequent parameter list fields, such as the address of an ALTSEQ table, are not used in this application.

Because the address of the E15 routine is passed in the parameter list, SORTIN cannot be used; if a SORTIN DD statement were present, it would be ignored.

22-23
This is the start of the control statements area. The total length of the control statements is specified.
24
SORT statement. FIELDS specifies an ascending 8-byte floating-sign control field starting at position 5.
25
RECORD statement. TYPE=F and LENGTH=80 specify that the E15 inserts fixed-length records of 80 bytes. In this case, TYPE=F could be omitted, because DFSORT would automatically set a record type of F. However, LENGTH must be specified when an E15 supplies all of the input records.
26-27
OPTION statement. FILSZ=E25000 specifies an estimate of 25000 records, which is overridden by FILSZ=E30000 in SORTCNTL's OPTION statement. DYNALLOC specifies that work data sets are to be dynamically allocated using the installation defaults for the type of device and number of devices. RESINV=8000 specifies that approximately 8000 bytes are required for the system services (for example, GETMAIN and OPEN) that MYSORT's E15 exit routine performs.
28
OMIT statement. FORMAT specifies that the compare fields are floating-sign. COND specifies that input records with equal 8-byte floating-sign compare fields starting in position 5 (also the control field) and position 13 are to be omitted from the output data set.
29
This is the end of the control statements area.
30
This is the DCB for MYSORT's MSGOUT output.
31-33
This is MYSORT's E15 routine. The E15 routine loads the address of the GETMAINed work area from the second word of the E15 parameter list. The E15 routine must supply each input record by placing its address in register 1 and placing a 12 (insert) in register 15. When all the records have been passed, the E15 routine must place an 8 ("do not return") in register 15.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014