VIB TITLE 'DMSVIB (CMS) VM/370 - RELEASE 6' 00001000 *********************************************************************** 00002000 * * 00003000 * * 00004000 * MODULE NAME: * 00005000 * * 00006000 * DMSVIB - CMS VSAM INTERFACE BOOTSTRAP ROUTINE * 00007000 * * 00008000 * * 00009000 * FUNCTION: * 00010000 * * 00011000 * TO LOAD THE CMS VSAM SAVED SYSTEM (IF NOT ALREADY DONE) * 00012000 * AND TO PASS CONTROL TO THE CMS VSAM INTERFACE ROUTINE * 00013000 * (DMSVIP). * 00014000 * * 00015000 * ATTRIBUTES: * 00016000 * * 00017000 * NUCLEUS RESIDENT, REENTRANT * 00018000 * * 00019000 * ENTRY POINTS: * 00020000 * * 00021000 * DMSVIB - SEE FUNCTION DESCRIPTION * 00022000 * * 00023000 * ENTRY CONDITIONS: * 00024000 * * 00025000 * BALR'D TO BY USER PROGRAM DURING FIRST EXECUTION OF OS * 00026000 * VSAM MACROS GENCB, TESTCB, SHOWCB, OR MODCB, OR DURING * 00027000 * OPEN BY CMS OPEN ROUTINE (DMSSOP) * 00028000 * * 00029000 * EXIT CONDITIONS: * 00030000 * * 00031000 * NORMAL - CONTROL IS PASSED TO CMS INTERFACE ROUTINE (DMSVIP).* 00032000 * REGISTERS ARE UNCHANGED, EXCEPT FOR REGISTER 15 WHICH 00033000 * CONTAINS THE BRANCH ADDRESS. * 00034000 * * 00035000 * ERROR - CONTROL IS PASSED TO CMS ABEND ROUTINE (DMSABN) * 00036000 * FOR THE FOLLOWING ERROR CONDITIONS: * 00037000 * SYSTEM DOES NOT EXIST, SYSTEM PREVIOUSLY SAVED IN * 00038000 * NUCLEUS STORAGE RATHER THAN USER AREA, OR PAGING * 00039000 * I/O ERRORS ENCOUNTERED. * 00040000 * FOR EACH OF THE ABOVE CASES, PROGRAM EXECUTION * 00041000 * IS TERMINATED. * 00042000 * * 00043000 * CALLS TO OTHER ROUTINES: * 00044000 * * 00045000 * DMSVIP - (UPON EXIT) PROCESS VSAM REQUESTS * 00046000 * * 00047000 * EXTERNAL REFERENCES: * 00048000 * * 00049000 * DMSKEY - FOR CORRECT PROTECT KEY * 00050000 * DMSERR - FOR CMS ERROR MESSAGES * 00051000 * DMSFREE - FOR NUCLEUS FREE STORAGE * 00052000 * DMSABN - FOR ABNORMAL TERMINATION OF RUN * 00053000 * REGEQU - FOR SYMBOLIC REGISTER NAMES * 00054000 * NUCON - FOR NUCLEUS STORAGE AREA DSECT * 00055000 * SYSNAMES - FOR SAVED SYSTEM NAMES DSECT * 00056000 * * 00057000 * TABLES/WORK AREAS: * 00058000 * * 00059000 * NONE * 00060000 * * 00061000 * REGISTER USAGE: * 00062000 * * 00063000 * GPR0 - NUCLEUS DSECT * 00064000 * GPR1, GPR2, GPR3, GPR5 - WORK REGS * 00065000 * GPR12 - DMSVIB ADDRESSABILITY * 00066000 * GPR15 - TEMP ADDRESSABILITY UPON ENTRY * 00067000 * * 00068000 * NOTES: * 00069000 * IN ORDER TO ALLOW DMSVIB TO GET CONTROL AFTER OS GENCB, * 00070000 * TESTCB, MODCB, OR SHOWCB MACRO EXECUTION, THE VIB ADCON * 00071000 * MUST BE AT RELATIVE LOCATION 12(C). * 00072000 * THE FOLLOWING OS VSAM MACRO EXPANSION LOADS THE ENTRY POINT * 00073000 * ADDRESS SET IN THE SIMULATED CVT AT INITIAL PROGRAM * 00074000 * LOAD: * 00075000 * * 00076000 * + L 15,16 POINT TO CVT * 00077000 * + L 15,256(,15) POINT TO AMCBS * 00078000 * + L 15,12(,15) POINT TO CB MANIPULATION ROUTINE 00079000 * XX REPRESENTS VARIOUS *VA12931 00080000 * ENTRY POINTS 0 TO 80 *VA12931 00080300 * + BAL 14,XX(,15) BRANCH TO ROUTINE *VA12931 00080600 * * 00081000 * OPERATION: * 00082000 * * 00083000 * DMSVIB ISSUES A 'FINDSYS' TO DETERMINE WHETHER OR NOT * 00084000 * THE VSAM SAVED SYSTEM EXISTS, AND IF SO, HAS BEEN * 00085000 * LOADED. IF NOT, A 'LOADSYS' IS ISSUED TO LOAD THE * 00086000 * VSAM SYSTEM INTO THE USER AREA. * 00087000 * * 00088000 * UPON SUCCESSFUL COMPLETION, THE ADDRESS OF THE VSAM * 00089000 * INTERFACE ROUTINE (DMSVIP) IS STORED AT CVT+256 SO THAT * 00090000 * SUBSEQUENT VSAM REQUESTS CAN BALR DIRECTLY TO THE LOADED * 00091000 * INTERFACE ROUTINE RATHER THAN TO THE BOOTSTRAP. * 00092000 * * 00093000 * A REGISTER SAVE/WORK AREA IS RESERVED IN NUCLEUS FREE * 00094000 * STORAGE VIA A DMSFREE REQUEST FOR USE BY THE INTERFACE * 00095000 * ROUTINE AND ITS ADDRESS IS STORED IN THE NUCLEUS (AVIPWORK). * 00096000 * * 00097000 * CONTROL IS THEN PASSED TO DMSVIP. * 00098000 * * 00099000 *********************************************************************** 00100000 EJECT 00101000 DMSVIB START , @V305174 00102000 * 00103000 * THE FOLLOWING CODE FROM *XX TO *XY MUST REMAIN INTACT (SEE NOTES) 00104000 * 00105000 *XX 00106000 USING NUCON,R0 @V305174 00107000 BALR R15,0 SET ADDRESSABILITY *VA12931 00108000 USING *,R15 *VA12931 00109000 L R15,ADMSVIB1 SET TEMP BASE REG *VA12931 00110000 BR R15 BRANCH AROUND ADCON *VA12931 00111000 ORG DMSVIB+12 MUST BE AT DISPLACEMENT 12 *VA12931 00112000 DROP R15 @V305174 00114000 *********************************************************************** 00115000 * * 00116000 * VIB ADCON - MUST BE AT RELATIVE LOCATION 12(C) - SEE NOTES * 00117000 * * 00118000 *********************************************************************** 00119000 ADMSVIB1 DC A(DMSVIB1) SECOND MACRO ENTRY POINT *VA12931 00120000 SPACE 2 *VA12931 00120020 * *VA12931 00120040 * ENHANCED OS/VS VSAM CONTROL BLOCK MANIPULATION MACROS USE *VA12931 00120060 * BRANCH TABLE ENTRIES TO SUPPORT THE APPROPRIATE VSAM FUNC- *VA12931 00120080 * TION. THE FOLLOWING TABLE SUPPORTS BRANCH TABLE ENTRY. *VA12931 00120100 * *VA12931 00120120 DMSVIB1 DS 0H VSAM MACRO SECOND ENTRY ADDR *VA12931 00120140 USING DMSVIB1,R15 *VA12931 00120160 SPACE 2 *VA12931 00120180 B DMSVIB2 + 0 *VA12931 00120200 B DMSVIB2 + 4 *VA12931 00120220 B DMSVIB2 + 8 GENCB = ACB *VA12931 00120240 B DMSVIB2 + 12 GENCB = RPL *VA12931 00120260 B DMSVIB2 + 16 GENCB = EXLST *VA12931 00120280 B DMSVIB2 + 20 ** RESERVED ** *VA12931 00120300 B DMSVIB2 + 24 MODCB AN ACB *VA12931 00120320 B DMSVIB2 + 28 MODCB AN RPL *VA12931 00120340 B DMSVIB2 + 32 MODCB AN EXLST *VA12931 00120360 B DMSVIB2 + 36 ** RESERVED ** *VA12931 00120380 B DMSVIB2 + 40 SHOWCB = ACB *VA12931 00120400 B DMSVIB2 + 44 SHOWCB = RPL *VA12931 00120420 B DMSVIB2 + 48 SHOWCB = EXLST *VA12931 00120440 B DMSVIB2 + 52 ** RESERVED ** *VA12931 00120460 B DMSVIB2 + 56 TESTCB AN ACB *VA12931 00120480 B DMSVIB2 + 60 TESTCB AN RPL *VA12931 00120500 B DMSVIB2 + 64 TESTCB AN EXLST *VA12931 00120520 B DMSVIB2 + 68 ** RESERVED ** *VA12931 00120540 B DMSVIB2 + 72 SHOWCB/TESTCB (KEYWORDS) *VA12931 00120560 B DMSVIB2 + 76 SHOWCB (RECLEN OF RPL) *VA12931 00120580 B DMSVIB2 + 80 MODCB (RECLEN OF RPL) *VA12931 00120600 SPACE 2 *VA12931 00120620 DMSVIB2 DS 0H *VA12931 00120640 DMSKEY NUCLEUS GET NUCLEUS STORAGE KEY *VA12931 00120660 DROP R15 *VA12931 00120680 *********************************************************************** 00121000 *XY 00122000 STM R0,R14,BALRSAVE SAVE USER'S REGS *VA12931 00123000 BALR R12,0 SET ADDRESSABILITY *VA12931 00123600 USING *,R12 *VA12931 00124200 * 00125000 L R5,ASYSNAMS ADDRESS SYSTEM NAMES LIST @V305174 00126000 USING SYSNAMES,R5 @V305174 00127000 LA R2,CMSVSAM POINT AT SAVED SYSTEM NAME @V305174 00128000 LA R3,FINDSYS AND USE 'FINDSYS' CODE @V305066 00129000 DC X'83230064' FIND SAVED SYSTEM @V305174 00130000 BC 8,LOADED CC=0, ALREADY LOADED @V305174 00131000 BC 4,LOADIT CC=1, EXISTS BUT NOT LOADED @V305174 00132000 SPACE 1 00133000 ERRORS CH R3,FORTY4 RC = 44? @V305174 00134000 BE ERR400S IF SO, NO SUCH SYSTEM @V305174 00135000 B ERR410S OTHERWISE, PAGING I/O ERRORS@V305174 00136000 SPACE 1 00137000 LOADIT C R2,VMSIZE OVERLAY VM STOR IF LOADSYS? @V305174 00138000 BL ERR401S YES, ERROR @V305174 00139000 LA R2,CMSVSAM POINT TO NAME AGAIN @V305174 00140000 XR R3,R3 R3=0 FOR SHARED COPY @V305174 00141000 DC X'83230064' LOAD THE SHARED SYSTEM @V305174 00142000 BC 2,ERRORS ERRORS (SHOULDN'T HAPPEN) @V305174 00143000 DROP R5 @V305174 00144000 SPACE 1 00145000 LOADED EQU * @V305174 00146000 OI VSAMFLG1,VSAMRUN VSAM LOADED @V305174 00147000 ST R2,AVSAMSYS VSAM DCSS ADDR IN NUCON @V305174 00148000 L R2,12(,R2) INTFC ADDR FRM VSAM DCSS@V305174 00149000 L R5,ACMSCVT POINT TO SIMULATED CVT @V305174 00150000 LA R5,256(,R5) PT TO VSAM INTFC ADDR CELL @V305174 00151000 ST R2,0(,R5) STORE ADDR OF DMSVIP @V305174 00152000 * 00153000 * RESERVE A WORK AREA IN NUCLEUS FREE STORAGE FOR USE BY DMSVIP 00154000 * 00155000 LA R0,CON37 LOAD SIZE OF AREA (NO. DWORDS@V305174 00156000 DMSFREE DWORDS=(0),TYPE=NUCLEUS,ERR=ERR109S @V305174 00157000 ST R1,AVIPWORK SAVE ADDR OF AREA IN NUCLEUS @V305174 00158000 XC 0(256,R1),0(R1) INITIALIZE WORK AREA @V305174 00159000 XC 256(40,R1),256(R1) @V305174 00160000 * 00161000 DMSKEY RESET @V305174 00162000 * 00163000 * EXIT TO DMSVIP 00164000 * 00165000 LR R15,R2 LOAD BRANCH REG @V305174 00166000 LM R0,R14,BALRSAVE RESTORE USER'S REGS @V305174 00167000 BR R15 EXIT TO VSAM INTERFACE RTN @V305174 00168000 EJECT 00169000 ERR400S EQU * @V305174 00170000 DMSERR MF=(E,'SYS'),NUM=400,LET=S,SUB=(CHARA,(R2)), @V305174*00171000 TEXT='SYSTEM ''........'' DOES NOT EXIST' @V305174 00172000 B ABEND @V305174 00173000 SPACE 2 00174000 ERR401S EQU * @V305106 00175000 L R5,ASYSNAMS ADDR SYSTEM NAMES LIST @V305174 00176000 USING SYSNAMES,R5 @V305174 00177000 DMSERR MF=(E,'SYS'),LET=S,NUM=401,SUB=(HEXA,VMSIZE,CHARA,CMSVS*00178000 AM,HEX,(R2)),TEXT='V.M. SIZE (......) CANNOT EXCEED ''..*00179000 ......'' START ADDRESS (......)' @VA04739 00180100 DROP R5 @V305174 00181000 LA R3,ABEND104 ABEND CODE @V305066 00182000 B ABEND @V305174 00183000 ERR109S DMSERR NUM=109,LET=S,TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED' 00184000 LA R3,ABEND177 ABEND CODE @V305066 00185000 B ABEND @V305174 00186000 EJECT 00187000 ERR410S EQU * @V305174 00188000 DMSERR LET=S,NUM=410,SUB=(DEC,(R3)),TEXT='CONTROL PROGRAM ERRO*00189000 R INDICATION ''....''' @V305174 00190000 LA R3,ABEND174 ABEND CODE @V305066 00191000 ABEND DMSABN (R3),TYPCALL=SVC @V305174 00192000 SPACE 2 00193000 DS 0D @V305174 00194000 FORTY4 DC H'44' CP RC FOR 'SYSTEM NOT FOUND'@V305174 00195000 SPACE 2 00196000 * EQUATES 00197000 SPACE 2 00198000 FINDSYS EQU 12 FINDSYS CODE @V305066 00199000 CON37 EQU 37 @V305066 00200000 ABEND104 EQU X'104' ABEND CODE @V305066 00201000 ABEND177 EQU X'177' ABEND CODE @V305066 00202000 ABEND174 EQU X'174' ABEND CODE @V305066 00203000 EJECT 00204000 REGEQU @V305174 00205000 NUCON @V305174 00206000 SYSNAMES @V305174 00207000 END 00208000