PRINT ON,GEN,NODATA 00010000 *---------------------------------------------------------------------* 00020000 * * 00030000 * THIS IS ROUTINE FUNCTIONS AS A "WRAPPER" FOR CALLING THE VSAMIO * 00040000 * ROUTINE FROM PL/1. ITS ONLY FUNCTION IS TO VERIFY THAT THREE * 00050000 * PARAMETERS HAVE BEEN PASSED, AND, IF SO, THEY ARE USED TO CALL * 00060000 * VSAMIO INDIRECTLY. THE REASON THIS IS NECESSARY IS THAT PL/1 * 00070000 * BUILDS A STRING DESCRIPTOR BLOCK FOR CHARACTER VARIABLES INSTEAD * 00080000 * OF JUST PASSING THE ADDRESS OF THE CHARACTER STRING (OR STRUCTURE) * 00090000 * THAT IS BEING PASSED. * 00100000 * * 00110000 * THIS CODE IS PLACED IN THE PUBLIC DOMAIN AND MAY BE FREELY USED * 00120000 * AND INCORPORATED INTO DERIVED WORKS AS LONG AS ATTRIBUTION TO THE * 00130000 * ORIGINAL AUTHORSHIP REMAINS IN ANY DISTRIBUTED COPIES OF THE ALC * 00140000 * SOURCE. * 00150000 * * 00160000 * WRITTEN DECEMBER, 2001 BY JAY MOSELEY, CCP * 00170000 * HTTP://WWW.JAYMOSELEY.COM/HERCULES/ * 00180000 * * 00190000 *---------------------------------------------------------------------* 00200000 EJECT 00210000 * 00220000 LCLC &SYSECT 00230000 &SYSECT SETC 'VSAMIOP' ROUTINE IDENTIFICATION 00240000 * 00250000 &SYSECT CSECT 00260000 * 00270000 @IDENT01 B @IDENT04(R15) BRANCH AROUND IDENT CONSTANTS 00280000 DC AL1(@IDENT03-@IDENT02) 00290000 @IDENT02 DC C'&SYSECT ' 00300000 DC C'&SYSDATE &SYSTIME - ' 00310000 DC C'PL/1 WRAPPER FOR VSAMIO' 00320000 @IDENT03 DS 0H 00330000 @IDENT04 EQU *-@IDENT01 00340000 * 00350000 SAVE (14,12) 00360000 * 00370000 BALR R12,0 BASE REGISTER IS 12 00380000 USING *,R12 00390000 * 00400000 LR R5,R13 COPY CALLER'S SAVEAREA ADDR 00410000 LA R13,SAVEAREA ESTABLISH MY SAVEAREA 00420000 ST R5,4(,R13) BACK CHAIN SAVE AREAS 00430000 ST R13,8(,R5) FORWARD CHAIN SAVE AREAS 00440000 * 00450000 *---------------------------------------------------------------------* 00460000 * THREE PARAMETERS SHOULD BE PASSED FROM THE CALLER. THE ADDRESS OF * 00470000 * THE LAST PARAMETER PASSED WILL HAVE ITS HIGH ORDER BIT SET ON. * 00480000 * IF NOT CALLED WITH THREE PARAMETERS, ISSUE MESSAGE AND ABEND. * 00490000 *---------------------------------------------------------------------* 00500000 TM 0(R1),X'80' ONE PARAMETER PASSED? 00510000 BO PERROR IF YES, ERROR 00520000 TM 4(R1),X'80' TWO PARAMETERS PASSED? 00530000 BO PERROR IF YES, ERROR 00540000 TM 8(R1),X'80' THREE PARAMETERS PASSED? 00550000 BO CALLVS IF YES, CONTINUE 00560000 * 00570000 PERROR DS 0H 00580000 WTO 'VSAMIOP: INSUFFICIENT PARAMETERS RECEIVED', C00590000 ROUTCDE=11 00600000 ABEND 712,DUMP 00610000 * 00620000 CALLVS DS 0H 00630000 LM R9,R11,0(R1) LOAD ADDRESSES FROM PASSED LIST 00640000 L R9,0(,R9) ADDRESS COMMAND BLOCK 00650000 L R10,0(,R10) ADDRESS FILE ATTRIBUTES BLOCK 00660000 L R11,0(,R11) ADDRESS FILE I/O AREA 00670000 STM R9,R11,VSIOPARM STORE ADDRESSES TO PASS 00680000 LA R1,VSIOPARM ADDRESS PARAMETER LIST 00690000 L R15,=V(VSAMIO) ADDRESS ROUTINE 00700000 BALR R14,R15 CALL ROUTINE 00710000 * 00720000 GOBACK DS 0H 00730000 *---------------------------------------------------------------------* 00740000 * RETURN TO CALLING PROGRAM WITH ZERO RETURN CODE IN R15 * 00750000 *---------------------------------------------------------------------* 00760000 L R13,4(,R13) RETRIEVE CALLER'S SAVE AREA 00770000 RETURN (14,12),RC=(15) 00780000 * 00790000 *---------------------------------------------------------------------* 00800000 * MY REGISTER SAVE AREA * 00810000 *---------------------------------------------------------------------* 00820000 SAVEAREA DS 18F 00830000 * 00840000 *---------------------------------------------------------------------* 00850000 * THIS WILL BE THE ADDRESS LIST PASSED ON TO VSAMIO * 00860000 *---------------------------------------------------------------------* 00870000 VSIOPARM DS 3F 00880000 * 00890000 LTORG 00900000 * 00910000 R0 EQU 0 00920000 R1 EQU 1 00930000 R2 EQU 2 00940000 R3 EQU 3 00950000 R4 EQU 4 00960000 R5 EQU 5 00970000 R6 EQU 6 00980000 R7 EQU 7 00990000 R8 EQU 8 01000000 R9 EQU 9 01010000 R10 EQU 10 01020000 R11 EQU 11 01030000 R12 EQU 12 01040000 R13 EQU 13 01050000 R14 EQU 14 01060000 R15 EQU 15 01070000 * 01080000 END 01090000