Dynamic output programming example (continued)
The text unit pointer list references four text units.
The first is hard coded and the other three are set up dynamically.
* POINTERS TO FOUR TEXT UNITS.
*
TXTPTRS1 DS 0F TEXT UNIT POINTERS
POINTER1 DC AL4(BURST) ADR TU FOR BURST
POINTER2 DC AL4(COPIES) ADR TU FOR COPIES
POINTER3 DC AL4(COPYGRP) ADR TU FOR GROUPING
POINTER4 DC AL4(FORMDEF) ADR TU FOR FORMDEF
*
BURST DS 0H BURST SELECTION TU
DC AL2(DOBURST) KEY=BURST
DC XL2'0001' HOW MANY VAL FIELDS
DC XL2'0001' LEN OF VALUE FIELD
DC XL1'02' VAL FLD (HARD CODED BURST=Y)
*
COPIES DS 0H NBR COPIES TU
DC AL2(DOCOPIE9) KEY=COPIES
DC XL2'0001' HOW MANY VAL FIELDS
DC XL2'0001' LEN OF VALUE FIELD
COPYPRM DS XL1 VALUE FIELD (TO BE ALTERED)
*
COPYGRP DS 0H COPY GROUPING TU
DC AL2(DOCOPIEA) KEY=COPIES(GROUP)
DC XL2'0002' HOW MANY VAL FIELDS
DC XL2'0001' LEN OF VALUE FIELD 1
GROUP#1 DS XL1 VALUE FIELD 1 (TO BE ALTERED)
DC XL2'0001' LEN OF VALUE FIELD 2
GROUP#2 DS XL1 VALUE FIELD 2 (TO BE ALTERED)
*
FORMDEF DS 0H FORMS DEFINITION TU
DC AL2(DOFORMD) KEY=FORMDEF
DC XL2'0001' HOW MANY VAL FIELDS
DC XL2'0006' LEN OF VALUE FIELD
FORMDPRM DS CL6 VALUE FIELD (TO BE ALTERED)
*
* CONSTANTS FOR DYNAMIC OUTPUT INVOCATION
*
ODNAME DC CL8'OUT1 ' OUTPUT DES NAME
ENDMASK DC X'80000000' HIGH ORDER BIT ON
*
* PARAMETER LISTS FOR OUTADD AND OUTDEL
*
ADDPARML OUTADD MF=L
DELPARML OUTDEL MF=L
IEFDOKEY DEFINES DOBURST, ETC
*
* Program returns ptr to this table to the caller
*
OUTPUT_DATA DS 0XL28 INFORMATION RETURNED
OUTADD_RETCODE DS XL4'0' OUTADD RETURN CODE
OUTADD_RESCODE DS XL4'0' OUTADD REASON CODE
OUTADD_KEY DS XL4'0' OUTADD KEY IN ERROR
OUTDEL_RETCODE DS XL4'0' OUTDEL RETURN CODE
OUTDEL_RESCODE DS XL4'0' OUTDEL REASON CODE
DYNAL_RETCODE DS XL4'0' DYNALLOC RETURN CODE
DYNAL_REASON DS XL4'0' DYNALLOC REASON CODES