**** 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 * $EV=LAPS0009,HPRF332,010530,BUQ4RLB: Version 3.3.2 @EVA* 00690000 * * 00700000 **** END OF SPECIFICATIONS ******************************************* 00710000 * 00720000 APSUX15 START 0 00730000 TITLE 'DSECT - XTP' 00740000 APSGEXTP LIST=YES 00750000 TITLE 'DSECT - ECA' 00760000 APSUECA LIST=YES 00770000 TITLE 'GENERAL PURPOSE REGISTER EQUATES' 00780000 TITLE 'APSUX15 - DOWNLOAD FOR OS/390 PRINT PARAMETER EXIT' 00790000 APSUX15 CSECT , 00800000 APSUX15 AMODE 31 00810000 APSUX15 RMODE ANY 00820000 USING APSUX15,R15 00830000 B PROLOG 00840000 DC AL1(16) 00850000 DC CL8'APSUX15' 00860000 DC CL8'&SYSDATE' 00870000 DROP R15 00880000 * 00890000 ********************************************************************** 00900000 * PROLOG 00910000 ********************************************************************** 00920000 PROLOG DS 0H 00930000 STM R14,R12,12(R13) SAVE CALLERS REGISTERS 00940000 LR RBASE,R15 R12 IS BASE REG 00950000 USING APSUX15,RBASE BASE APSUX15 ON R12 00960000 L RXTP,0(,RPARM) RXTP -> APSGEXTP 00970000 USING APSGEXTP,RXTP BASE APSGEXTP ON RXTP 00980000 L RECA,XTPECAP RECA -> APSUECA 00990000 USING APSUECA,RECA BASE APSUECA ON RECA 01000000 LA RBUF,ECAWKBUF LOAD ADDR OF ECA WORK AREA 01010000 USING WKBUF,RBUF ECA WORK AREA POINTER 01020000 LR RWK1,R13 LOAD CALLER SAVE AREA ADDR. 01030000 LA R13,ECAUSAVE R13 -> APSUX15 SAVE AREA 01040000 ST RWK1,4(,R13) SAVE CALLERS SAVE AREA ADDR 01050000 ST R13,8(,RWK1) FORWARD CHAIN SAVE AREAS 01060000 * 01070000 ********************************************************************** 01080000 * Following flags in ECAFLAG are used to determine which dataset 01090000 * this is in the JES group. 01100000 * 01110000 * .1.. .... ECALSTDS Last dataset 01120000 * 0 = Not the last dataset 01130000 * of the job 01140000 * 1 = Last dataset of the job 01150000 * ..1. .... ECAFSTDS First dataset 01160000 * 0 = Not the first dataset 01170000 * of the job 01180000 * 1 = First dataset of the job 01190000 * 01200000 * Following are the combinations of the ECALSTDS and ECAFSTDS 01210000 * flags and their meanings 01220000 * 01230000 * 00 = Not first or last dataset (middle or next dataset) 01240000 * 01 = First dataset 01250000 * 10 = Last dataset 01260000 * 11 = Only dataset 01270000 * 01280000 ********************************************************************** 01290000 TM ECAFLAG,ECAFSTDS FIRST ON? (FIRST OR ONLY) 01300000 BNO NOTFIRST BRANCH IF OFF (NOT FIRST) 01310000 TM ECAFLAG,ECALSTDS LAST DATA SET FLAG ON? 01320000 BO ONLY BRANCH IF BOTH ON (ONLY) 01330000 * OTHERWISE ITS FIRST 01340000 FIRST EQU * 01350000 MVC STRING(L'@FIRST),@FIRST MOVE 'FIRST' STRING 01360000 LA RWK1,L'@FIRST LOAD LENGTH OF STRING 01370000 B RETN BRANCH TO RETURN 01380000 ONLY EQU * 01390000 MVC STRING(L'@ONLY),@ONLY MOVE 'ONLY' STRING 01400000 LA RWK1,L'@ONLY LOAD LENGTH OF STRING 01410000 B RETN BRANCH TO RETURN 01420000 NOTFIRST EQU * 01430000 TM ECAFLAG,ECALSTDS LAST DATASET FLAG ON? 01440000 BO LAST BRANCH IF YES (LAST) 01450000 * OTHERWISE ITS NEXT 01460000 NEXT EQU * 01470000 MVC STRING(L'@NEXT),@NEXT MOVE 'NEXT' STRING 01480000 LA RWK1,L'@NEXT LOAD LENGTH OF STRING 01490000 B RETN BRANCH TO RETURN 01500000 LAST EQU * 01510000 MVC STRING(L'@LAST),@LAST MOVE 'LAST' STRING 01520000 LA RWK1,L'@LAST LOAD LENGTH OF STRING 01530000 RETN EQU * 01540000 ST RWK1,ECARECLN STORE STRING LENGTH 01550000 LA RWK1,STRING LOAD STRING ADDRESS 01560000 ST RWK1,ECARECAD STORE STRING ADDRESS 01570000 * 01580000 ********************************************************************** 01590000 * EPILOG 01600000 ********************************************************************** 01610000 L R13,4(,R13) R13 -> CALLER'S SAVE AREA 01620000 LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS 01630000 XR R15,R15 RC=0 (RETURN CODE) (R15) 01640000 BR R14 RETURN 01650000 * 01660000 ********************************************************************** 01670000 * CONSTANTS, LOCAL VARIABLES, AND REGISTER EQUATES 01680000 ********************************************************************** 01690000 @FIRST DC C'OUTGRP=FIRST' 01700000 @NEXT DC C'OUTGRP=NEXT' 01710000 @LAST DC C'OUTGRP=LAST' 01720000 @ONLY DC C'OUTGRP=ONLY' 01730000 * 01740000 R0 EQU 0 01750000 RPARM EQU 1 01760000 RWK1 EQU 2 01770000 RECA EQU 5 01780000 RXTP EQU 6 01790000 RBUF EQU 7 01800000 RBASE EQU 10 01810000 R12 EQU 12 01820000 R13 EQU 13 01830000 R14 EQU 14 01840000 R15 EQU 15 01850000 * 01860000 ********************************************************************** 01870000 * APSUECA WORK BUFFER 01880000 ********************************************************************** 01890000 WKBUF DSECT 01900000 STRING DS CL12 AREA TO BUILD RTN STRING 01910000 * 01920000 END APSUX15 01930000