**** START OF SPECIFICATIONS ***************************************** 00010000 * * 00020000 * MODULE NAME = APSUX15M * 00030000 * * 00040000 * $MOD(APSUX15M) COMP(APS) PROD(PSF) : RELEASE 3.2.2 * 00050000 * * 00060000 * DESCRIPTIVE NAME = SAMPLE DOWNLOAD FOR OS/390 PRINT PARAMETER EXIT * 00070000 * * 00080000 * STATUS = VERSION 3, RELEASE 2, LEVEL 2 * 00090000 * * 00100000 * FUNCTION = PASS A STRING TO DOWNLOAD TO INDICATE IF THIS IS * 00110000 * THIS IS THE FIRST, NEXT, LAST OR ONLY OUTPUT DATA * 00120000 * SET. THIS INFORMATION CAN BE USED BY THE AIX DAEMON * 00130000 * TO RE-COMBINE MULTIPLE DATASETS INTO A SINGLE JOB. * 00140000 * * 00150000 * OPERATION = THE FOLLOWING ITEMS ARE DONE BY THIS SAMPLE EXIT: * 00160000 * 1. PICK UP DATSET INFORMATION FROM APSEUCA * 00170000 * 2. FORMULATE A STRING TO PASS TO AIX IN -opa * 00180000 * 3. PASS THE STRING TO DOWNLOAD FOR OS/390. * 00190000 * * 00200000 * NOTES = * 00210000 * DEPENDENCIES = NONE * 00220000 * RESTRICTIONS = NONE * 00230000 * REGISTER-CONVENTIONS = R15 = ENTRY ADDRESS, RESET ON RETURN * 00240000 * R13 = SAVE AREA ADDRESS * 00250000 * R12 = BASE REGISTER * 00260000 * R4-R11 = SEE ASSEMBLER EQUATES BELOW * 00270000 * PATCH LABEL = NONE * 00280000 * * 00290000 * MODULE TYPE = PROCEDURE * 00300000 * PROCESSOR = ASSEMBLER * 00310000 * ATTRIBUTES = REENTRANT * 00320000 * AMODE 31 * 00330000 * RMODE ANY * 00340000 * * 00350000 * ENTRY POINT = APSUX15 * 00360000 * LINKAGE = STANDARD CALL * 00370000 * R1 = ADDRESS OF A 4 BYTE FIELD WHICH * 00380000 * CONTAINS THE ADDRESS OF APSGEXTP * 00390000 * * 00400000 * INPUT = * 00410000 * APSGEXTP - PSF Installation Exit Parameter Area * 00420000 * APSUECA - PSF Exit Communications Area * 00430000 * * 00440000 * OUTPUT = * 00450000 * EBCDIC TEXT STRING * 00460000 * * 00470000 * EXIT NORMAL = RETURN TO CALLER * 00480000 * * 00490000 * EXIT ERROR = NONE * 00500000 * * 00510000 * EXTERNAL REFERENCES = * 00520000 * ROUTINES = * 00530000 * NONE * 00540000 * * 00550000 * DATA AREAS = * 00560000 * APSGEXTP - PSF Installation Exit Parameter Area * 00570000 * APSUECA - PSF Exit Communications Area * 00580000 * * 00590000 * INCLUDES = NONE * 00600000 * * 00610000 * MACROS = NONE * 00620000 * * 00630000 * MESSAGES = NONE * 00640000 * * 00650000 * CHANGE ACTIVITY = * 00660000 * $B0=OW41905, HPRF220, 991130, BDKUDDA: Sample multi-dataset exit * 00670000 * for Download for OS390 @B0A* 00680000 * * 00690000 **** END OF SPECIFICATIONS ******************************************* 00700000 * 00710000 APSUX15 START 0 00720000 TITLE 'DSECT - XTP' 00730000 APSGEXTP LIST=YES 00740000 TITLE 'DSECT - ECA' 00750000 APSUECA LIST=YES 00760000 TITLE 'GENERAL PURPOSE REGISTER EQUATES' 00770000 TITLE 'APSUX15 - DOWNLOAD FOR OS/390 PRINT PARAMETER EXIT' 00780000 APSUX15 CSECT , 00790000 APSUX15 AMODE 31 00800000 APSUX15 RMODE ANY 00810000 USING APSUX15,R15 00820000 B PROLOG 00830000 DC AL1(16) 00840000 DC CL8'APSUX15' 00850000 DC CL8'&SYSDATE' 00860000 DROP R15 00870000 * 00880000 ********************************************************************** 00890000 * PROLOG 00900000 ********************************************************************** 00910000 PROLOG DS 0H 00920000 STM R14,R12,12(R13) SAVE CALLERS REGISTERS 00930000 LR RBASE,R15 R12 IS BASE REG 00940000 USING APSUX15,RBASE BASE APSUX15 ON R12 00950000 L RXTP,0(,RPARM) RXTP -> APSGEXTP 00960000 USING APSGEXTP,RXTP BASE APSGEXTP ON RXTP 00970000 L RECA,XTPECAP RECA -> APSUECA 00980000 USING APSUECA,RECA BASE APSUECA ON RECA 00990000 LA RBUF,ECAWKBUF LOAD ADDR OF ECA WORK AREA 01000000 USING WKBUF,RBUF ECA WORK AREA POINTER 01010000 LR RWK1,R13 LOAD CALLER SAVE AREA ADDR. 01020000 LA R13,ECAUSAVE R13 -> APSUX15 SAVE AREA 01030000 ST RWK1,4(,R13) SAVE CALLERS SAVE AREA ADDR 01040000 ST R13,8(,RWK1) FORWARD CHAIN SAVE AREAS 01050000 * 01060000 ********************************************************************** 01070000 * Following flags in ECAFLAG are used to determine which dataset 01080000 * this is in the JES group. 01090000 * 01100000 * .1.. .... ECALSTDS Last dataset 01110000 * 0 = Not the last dataset 01120000 * of the job 01130000 * 1 = Last dataset of the job 01140000 * ..1. .... ECAFSTDS First dataset 01150000 * 0 = Not the first dataset 01160000 * of the job 01170000 * 1 = First dataset of the job 01180000 * 01190000 * Following are the combinations of the ECALSTDS and ECAFSTDS 01200000 * flags and their meanings 01210000 * 01220000 * 00 = Not first or last dataset (middle or next dataset) 01230000 * 01 = First dataset 01240000 * 10 = Last dataset 01250000 * 11 = Only dataset 01260000 * 01270000 ********************************************************************** 01280000 TM ECAFLAG,ECAFSTDS FIRST ON? (FIRST OR ONLY) 01290000 BNO NOTFIRST BRANCH IF OFF (NOT FIRST) 01300000 TM ECAFLAG,ECALSTDS LAST DATA SET FLAG ON? 01310000 BO ONLY BRANCH IF BOTH ON (ONLY) 01320000 * OTHERWISE ITS FIRST 01330000 FIRST EQU * 01340000 MVC STRING(L'@FIRST),@FIRST MOVE 'FIRST' STRING 01350000 LA RWK1,L'@FIRST LOAD LENGTH OF STRING 01360000 B RETN BRANCH TO RETURN 01370000 ONLY EQU * 01380000 MVC STRING(L'@ONLY),@ONLY MOVE 'ONLY' STRING 01390000 LA RWK1,L'@ONLY LOAD LENGTH OF STRING 01400000 B RETN BRANCH TO RETURN 01410000 NOTFIRST EQU * 01420000 TM ECAFLAG,ECALSTDS LAST DATASET FLAG ON? 01430000 BO LAST BRANCH IF YES (LAST) 01440000 * OTHERWISE ITS NEXT 01450000 NEXT EQU * 01460000 MVC STRING(L'@NEXT),@NEXT MOVE 'NEXT' STRING 01470000 LA RWK1,L'@NEXT LOAD LENGTH OF STRING 01480000 B RETN BRANCH TO RETURN 01490000 LAST EQU * 01500000 MVC STRING(L'@LAST),@LAST MOVE 'LAST' STRING 01510000 LA RWK1,L'@LAST LOAD LENGTH OF STRING 01520000 RETN EQU * 01530000 ST RWK1,ECARECLN STORE STRING LENGTH 01540000 LA RWK1,STRING LOAD STRING ADDRESS 01550000 ST RWK1,ECARECAD STORE STRING ADDRESS 01560000 * 01570000 ********************************************************************** 01580000 * EPILOG 01590000 ********************************************************************** 01600000 L R13,4(,R13) R13 -> CALLER'S SAVE AREA 01610000 LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS 01620000 XR R15,R15 RC=0 (RETURN CODE) (R15) 01630000 BR R14 RETURN 01640000 * 01650000 ********************************************************************** 01660000 * CONSTANTS, LOCAL VARIABLES, AND REGISTER EQUATES 01670000 ********************************************************************** 01680000 @FIRST DC C'OUTGRP=FIRST' 01690000 @NEXT DC C'OUTGRP=NEXT' 01700000 @LAST DC C'OUTGRP=LAST' 01710000 @ONLY DC C'OUTGRP=ONLY' 01720000 * 01730000 R0 EQU 0 01740000 RPARM EQU 1 01750000 RWK1 EQU 2 01760000 RECA EQU 5 01770000 RXTP EQU 6 01780000 RBUF EQU 7 01790000 RBASE EQU 10 01800000 R12 EQU 12 01810000 R13 EQU 13 01820000 R14 EQU 14 01830000 R15 EQU 15 01840000 * 01850000 ********************************************************************** 01860000 * APSUECA WORK BUFFER 01870000 ********************************************************************** 01880000 WKBUF DSECT 01890000 STRING DS CL12 AREA TO BUILD RTN STRING 01900000 * 01910000 END APSUX15 01920000