Table of Contents

DMSVIP Abstract

Statistics

Type ASSEMBLE
Source Lines : 2,028
Fixes Applied : 3
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R12931DS]

Synopsis

Module

DMSVIP - CMS VSAM INTERFACE PROCESSOR *

Function

DMSVIP PERFORMS THE FOLLOWING: *

1. LOADS THE DOS DCSS (VSAM OPTION SPECIFIED). *

2. ISSUES ALL NECESSARY DOS ASSGN COMMANDS FOR THE OS *

         USER.                                                     *
                                                                   *
      3. MAPS ALL OS VSAM MACRO REQUESTS TO DOS SPECIFICATIONS     *
         (INCLUDING MODIFICATION OF VSAM CONTROL BLOCKS AND        *
         USER PARAMETER LISTS).                                    *
                                                                   *
      4. PERFORMS SIMULATION FOR OS ASYNCHRONOUS VSAM DATA         *
         MANAGEMENT REQUESTS.                                      *
                                                                   *
      5. MAPS DOS VSAM MACRO RETURN CODES AND ERROR CODES TO OS    *
         EQUIVALENTS WHERE NECESSARY.                              *
                                                                   *
      6. TRAPS ALL TRANSFERS OF CONTROL BETWEEN VSAM AND THE OS    *
         USER AND SETS THE APPROPRIATE OPERATING ENVIRONMENT FLAGS.*
                                                                   *
                                                                   *

Attributes

EXECUTES IN CMS VSAM DCSS, REENTRANT *

Operation

INITIALIZATION- *

UPON FIRST CALL TO THE INTERFACE, A 'SET DOS ON (VSAM '*

            COMMAND IS ISSUED TO LOAD THE DOS SEGMENT. THEN, THE   *
            CHAIN OF DOSCB'S IS SEARCHED AND DOS ASSGN COMMANDS    *
            ARE ISSUED FOR THE OS USER.                            *
                                                                   *
      OPEN (SVC19)-                                                *
                                                                   *
            ALL OS ACB'S ARE REARRANGED TO DOS FORMAT PRIOR TO     *
            OPEN. IN ADDITION, ANY EXIT LISTS POINTED TO BY THE    *
            ACB'S ARE REARRANGED IF NECESSARY. THE ADDRESSES OF    *
            EXIT ROUTINES CONTAINED THEREIN ARE REPLACED BY THE    *
            ADDRESS OF DMSVIP3 TO ALLOW VIP TO GAIN CONTROL        *
            PRIOR TO THE USER EXIT (SEE BELOW).                    *
                                                                   *
            A DOS OPEN IS THEN ISSUED VIA DOS SVC 2 TO $$BOPEN.    *
            ANY DOS ERROR CODES THAT DO NOT EXIST IN OS ARE        *
            MAPPED TO OS EQUIVALENTS. THE A(DMSVIP2) (ACTION MACRO *
            ENTRY POINT) IS STORED IN ALL SUCCESSFULLY OPENED      *
            ACB'S, AND CONTROL IS RETURNED TO THE CALLER (DMSSOP). *
                                                                   *
      CLOSE (SVC20), TCLOSE(SVC23)-                                *
                                                                   *
            THESE REQUESTS ARE MADE VIA DOS SVC 2 TO $$BCLOSE.     *
            FOR TCLOSE, A FLAG IS SET IN THE NUCLEUS TO DIRECT     *
            $$BCLOSE TO CALL $$BTCLOS AFTER PROCESSING THE SVC     *
            PLIST.                                                 *
                                                                   *
            THE A(IKQVSM) (VSAM DATA MGT REQUEST DRIVER) IS STORED *
            IN ALL ACB'S PRIOR TO THE SUPERVISOR CALL. ON RETURN,  *
            THE A(DMSVIP2) IS RESTORED IN THE ACB UNCONDITIONALLY  *
            FOR TCLOSE REQUESTS, AND IN UNSUCCESSFULLY CLOSED ACB'S*
            FOR CLOSE REQUESTS. CONTROL IS RETURNED TO THE CALLER. *
                                                                   *
      NOTE THAT FOR OPEN, CLOSE AND TCLOSE REQUESTS, AN ACB        *
      LIST IS BUILT IN FREE STORAGE FROM THE USER'S PLIST          *
      AND PASSED TO DOS. THE LIST IS DMSFRET'D UPON RETURN         *
      FROM VSAM.                                                   *
                                                                   *
                                                                   *
      GET, PUT, POINT, ENDREQ, ERASE-                              *
                                                                   *
            THE REQUEST CODE IN REGISTER ZERO IS MAPPED TO THE     *
            EQUIVALENT DOS REQUEST CODE. NEXT, THE RPL (OR CHAIN   *
            OF RPL'S) IS REARRANGED TO DOS FORMAT IF NOT PREVIOUSLY*
            DONE. IF THE USER HAS PROVIDED AN ECB ADDRESS IN THE   *
            OS RPL, A FLAG IS SET IN THE NEW DOS RPL AND THE ECB   *
            ADDRESS IS SAVED AT THE END OF THE BLOCK. ASYNCHRONOUS *
            PROCESSING IS SIMULATED BY THE SETTING OF ANY ACTIVE   *
            EXIT RTNS INACTIVE WITHIN THE USER EXLST (WITH THE     *
            EXCEPTION OF A JRNAD EXIT WHICH IS NOT AN ERROR EXIT). *
            THIS PREVENTS VSAM FROM TAKING AN ERROR EXIT AND ALLOWS*
            SUCH AN EXIT TO BE DEFERRED UNTIL A CHECK IS ISSUED    *
            (SEE BELOW).                                           *
                                                                   *
            THE DOS MACRO IS THEN ISSUED VIA A BALR TO IKQVSM.     *
                                                                   *
            ALL DOS ERROR CODES IN THE RPL FDBK FIELD THAT DO NOT  *
            EXIST IN OS ARE MAPPED TO OS EQUIVALENTS.              *
            IF THE USER HAS SPECIFIED SYNCHRONOUS PROCESSING, THE  *
            RETURN CODE IS PASSED UNCHANGED IN REGISTER 15.        *
                                                                   *
            FOR ASYNCHRONOUS PROCESSING, ANY RETURN CODE IS        *
            CLEARED BEFORE RETURN AND PREVIOUSLY SET INACTIVE      *
            EXIT ROUTINES ARE RESTORED TO ACTIVE STATUS IN THE     *
            EXLST. (SEE DESCRIPTION OF CHECK MACRO, BELOW, FOR     *
            FURTHER COMMENTS). ALL ECB'S ARE SET TO 'WAITING'      *
            STATUS.                                                *
                                                                   *
      CHECK-                                                       *
                                                                   *
            THE RPL FDBK FIELD IS EXAMINED FOR THE RESULTS OF THE  *
            PREVIOUS I/O OPERATION ON THE VSAM DATA SET. CONTROL   *
            IS PASSED TO THE APPROPRIATE EXIT ROUTINE, IF AN       *
            ACTIVE ONE HAS BEEN PROVIDED. ALSO, ALL 'WAITING'      *
            ECB'S ARE POSTED WITH AN EQUIVALENT COMPLETION CODE.   *
                                                                   *
            IF NO ACTIVE EXIT ROUTINE EXISTS, OR IF AN EXIT ROUTINE*
            'RETURNS TO VSAM', THE RETURN CODE IS SET IN REGISTER  *
            15, AND CONTROL IS RETURNED TO THE USER INSTRUCTION    *
            FOLLOWING THE CHECK.                                   *
                                                                   *
      GENCB-                                                       *
                                                                   *
            FOR GENCB BLK=ACB OR BLK=EXLST, A DOS GENCB REQUEST    *
            IS ISSUED VIA BALR TO IKQGEN. THE PLIST IS UNCHANGED.  *
                                                                   *
            IF THE GENCB IS FOR AN RPL, AND THE USER HAS SPECIFIED *
            THE ECB KEYWORD, THE PLIST IS REARRANGED TO EXCLUDE    *
            THE ECB ELEMENT, SINCE IT IS NOT SUPPORTED IN DOS.     *
            A DOS GENCB IS THEN ISSUED AND, IF THE USER HAS        *
            PROVIDED A WORKAREA, THE ADDRESS OF THE ECB IS STORED  *
            AT THE END OF THE RPL AND A FLAG IS SET IN THE RPL.    *
            THE PLIST IS RESTORED BEFORE CONTROL IS RETURNED TO    *
            THE USER.                                              *
                                                                   *
      MODCB, SHOWCB, TESTCB-                                       *
                                                                   *
            IF A MODCB IS ISSUED FOR AN OS ACB, RPL OR EXLST,      *
            THE CONTROL BLOCK IS REARRANGED TO DOS FORMAT BEFORE   *
            A BALR TO IKQTMS. THE ECB KEYWORD IS NOT ALLOWED ON    *
            A MODCB, SHOWCB OR TESTCB.                             *
                                                                   *
            IF THE REQUEST IS FOR TESTCB IO=COMPLETE, A 'NOT EQUAL'*
            OR 'WAITING' RESULT IS UNCONDITIONALLY RETURNED TO THE *
            USER. ALL OTHER SUPPORTED TESTCB REQUESTS ARE PASSED   *
            TO DOS, AND THE USER CAN RELY ON THE PSW CONDITION CODE*
            TO INDICATE THE RESULTS OF THE TEST.                   *
                                                                   *
            IF AN ERET EXIT IS PROVIDED FOR TESTCB, THE A(DMSVIP4) *
            IS SUBSTITUTED IN THE PLIST TO ALLOW VIP TO GAIN CONTROL
            PRIOR TO ERET ENTRY AND SET THE PROPER SVC BIT (DOS BIT*
            OFF). THE ERET ADDRESS IS RESTORED TO THE PLIST PRIOR TO
            RETURN TO THE USER FOLLOWING THE TESTCB.               *
                                                                   *
      VSAM EXIT TO USER EXIT RTN-                                  *
                                                                   *
            ENTRY TO THE INTERFACE IS MADE AT DMSVIP3 FOR ALL      *
            VSAM ERROR EXITS DURING I/O. THE DOS SVC BIT IS TURNED *
            OFF AND USER STORAGE KEY IS RESTORED.                  *
                                                                   *
            THE ADDRESS OF THE USER ROUTINE IS RECOVERED FROM      *
            THE SAVED LIST (EITHER THE PRIMARY LIST IN THE WORK AREA
            OR FROM AN OVERFLOW LIST- OEXLSA).                     *
                                                                   *
            CONTROL IS THEN PASSED DIRECTLY TO THE EXIT ROUTINE.   *
            IF THE ROUTINE 'RETURNS TO VSAM', VIP3 RESETS THE      *
            ENVIRONMENT FLAGS, AND BRANCHES BACK TO VSAM.          *
                                                                   *
            NOTE THAT THE INTERFACE IS CAPABLE OF SAVING UP TO     *
            128 DISTINCT EXIT ROUTINE ADDRESSES DURING A RUN UNIT. *
                                                                   *
      VSAM EXIT TO USER ERET RTN-                                  *
                                                                   *
            ENTRY TO THE INTERFACE IS MADE AT DMSVIP4 FOR ALL      *
            VSAM EXITS TO A USER ERET ROUTINE DURING TESTCB MACRO  *
            REQUESTS. THE DOS SVC BIT IS TURNED OFF AND USER       *
            STORAGE KEY RESTORED.                                  *
                                                                   *
            THE ADDRESS OF THE ERET ROUTINE IS RECOVERED FROM THE  *
            WORK AREA AND CONTROL IS PASSED TO THE ROUTINE.        *
                                                                   *
            NOTE THAT THE ERET ROUTINE IS RESTRICTED FROM RETURNING*
            CONTROL TO VSAM.                                       *
                                                                   *
                           NOTE - PROGRAMMER CODE = @V305174       *
                                                                   *

Calls to Other Routines

IKQGEN, IKQVSM, IKQTMS, $$BOPEN, $$BCLOSE *