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


E35 user exit: altering record length

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

This routine changes the variable-length output records making them all the same length.

Figure 1. E35 User Exit Example
E35     CSECT
* IF A RECORD IS GREATER THAN 204 BYTES, TRUNCATE IT TO 204 BYTES.
* IF A RECORD IS LESS THAN 204 BYTES, PAD IT OUT TO 204 BYTES.
* ALL OF THE RESULTING RECORDS WILL BE 204 BYTES LONG
* (4 BYTES FOR THE RDW AND 200 BYTES OF DATA).
         USING E35,12             SHOW BASE REG
         STM   14,12,12(13)       SAVE ALL REGS EXCEPT 13
         LA    12,0(0,15)         SET BASE REG
         ST    13,SAVE15+4        SAVE BACKWARD POINTER
         LA    14,SAVE15          SET FORWARD POINTER
         ST    14,8(13)           IN SAVE AREA
         LR    13,14              SET OUR SAVE AREA
         LR    2,1                SAVE PARM LIST POINTER
         L     3,0(,2)            LOAD ADDR OF RECORD
         LTR   3,3                EOF
         BZ    EOF                YES - DO NOT RETURN
         LH    4,0(,3)            GET RDW
         CH    4,CON204           IS RDW EQ 204
         BE    ACCEPT             YES-ACCEPT IT
         BL    PAD                LESS THAN 204-PAD
         LH    4,CON204           LIMIT LENGTH TO 204
         B     TRUNC              MORE THAN 204-TRUNCATE
PAD      DS    0H                 PAD OR TRUNCATE
         MVI   DATA,X'00'         ZERO OUT THE BUFFER
         MVC   DATA+1(199),DATA
TRUNC    DS    0H                 PAD OR TRUNCATE
         BCTR  4,0                DECREASE RDW FOR EXECUTE
         EX    4,MVPAD            MOVE RECORD INTO PAD/TRUNCATE BUFFER
         MVC   NEWRDW(2),CON204   SET NEW RDW TO 204
         LA    3,BUFFER           POINT TO PADDED/TRUNCATED RECORD
ACCEPT   DS    0H
         SR    15,15              SET RC=0
         LR    1,3                SET RECORD POINTER
         B     GOBACK
EOF      LA    15,8               EOF - SET RC=8
GOBACK   L     13,4(,13)
         L     14,12(,13)
         LM    2,12,28(13)        RESTORE REGS
         BR    14                 RETURN
MVPAD    MVC   BUFFER(*-*),0(3)   FOR EXECUTE
SAVE15   DS    18F
CON204   DC    H'204'
BUFFER   DS    0H
NEWRDW   DS    H                  NEW RDW OF 204
         DC    H'0'
DATA     DC    XL200'00'          BUFFER FOR PADDING/TRUNCATING
         END

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014