Table of Contents

DMSSOP Abstract

Statistics

Type ASSEMBLE
Source Lines : 1,744
Fixes Applied : 22
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R14488DS]

Synopsis

Module

       DMSSOP (SOOPCL)

Function

       TO PROCESS OS OPEN AND CLOSE MACROS.

Attributes

       REENTRANT, NUCLEUS RESIDENT.

Operation

       INITIALIZATION
          IOTYPE IS SET TO INDICATE OPEN OR OPENJ, UPON ENTRY TO
          SOOPCL, AND THE ADDRESS OF THE CURRENT DCB IS OBTAINED
          FROM THE LIST POINTED TO BY REGISTER 1.

       VSAM
          IF ANY OR ALL OF THE CONTROL BLOCKS POINTED TO BY
          THE ADDRESSES IN THE PLIST ARE ACB'S, A BALR IS
          MADE TO THE OS VSAM INTERFACE AFTER COMPLETION OF
          DCB PROCESSING. THE ADDRESS OF THE INTERFACE IS
          OBTAINED FROM CVT+256( PRIOR TO THE FIRST CALL,
          THIS CELL CONTAINS THE ADDRESS OF THE INTERFACE
          BOOTSTRAP).

          A PARAMETER LIST IS CONSTRUCTED IN THE USER SAVE
          AREA AS FOLLOWS:

             DC    CL1'O'     OPTION BYTE (C'O'-OPEN,
                              C'C'-CLOSE, C'T'-TCLOSE)
             DC    CL3'SOP'   SOP IDENTIFIER

          UPON RETURN FROM DMSVIP, REGISTER 15 CONTAINS THE
          RETURN CODE FROM THE DOS VSAM OPEN ROUTINE.


       DETERMINATION OF ACCESS METHOD
          THE  DATA SET  ORGANIZATION  (DCBDSORG) SWITCH  IS
          CHECKED  TO   BE  SURE   IT  IS   EITHER  PHYSICAL
          SEQUENTIAL,   PARTITIONED,   OR    DIRECT   ACCESS
          (EFFECTIVELY ELIMINATING  ONLY ISAM).  IF NONE  OF
          THE ABOVE, THE DCB WILL NOT BE OPENED.

          NEXT THE MACRO FORMAT  FIELD (DCBMACRF) IS CHECKED
          TO SEE WHICH  ACCESS METHOD IS REQUESTED,  AND THE
          ACCESS  METHOD  INDICATOR  (DCBCIND2)  IS  SET  TO
          SIGNAL QSAM OR BSAM.


       QSAM
          IF THE ACCESS  METHOD IS QSAM, DCBMACRF  IS TESTED
          FOR A GET, UPDATE OR PUT REQUEST, AND THE RELEVANT ROUTINE
          ADDRESS IS PLACED IN  THE CORRESPONDING DCB ACCESS
          FIELD  (NOTE THAT GET, UPDATE AND  PUT  ARE IN  THE  CMS
          ROUTINE DMSSQS)


       BSAM
          IF  THE ACCESS  METHOD  IS  BSAM, THE  ADDRESS  OF
          DMSSBS IS PLACED  IN DCB ACCESS FIELD;   THE CHECK
          ADDRESS IS PLACED  IN THE DCB CHECK  FIELD; AND IF
          POINT IS  REQUESTED, THE DMSSCT ADDRESS  IS PLACED
          IN THE DCBNOTE FIELD.


       SETTING UP DCB FIELDS
          AFTER  THE RELEVANT  QSAM  OR  BSAM PROCESSING,
          THE CMSCB(FCB) CHAIN IS TESTED TO
          SEE IF THERE IS A CMSCB  FOR THIS DCB. THAT IS, IF
          A FILEDEF COMMAND FOR THE  RESPECTIVE DATA SET HAS
          BEEN ISSUED. IF ONE DOES NOT EXIST, THE ASSUMPTION
          IS MADE THAT THE USER HAS  SET UP THE REQUIRED DCB
          FIELDS, AND  FILEDEF IS CALLED  TO CREATE  A CMSCB
          WITH A FILENAME OBTAINABLE  FROM LOCATION CMSNAME
          (INITIALIZED AS 'FILE'),
          A FILEMODE OF A1, AND A  FILETYPE EQUAL TO THE DCB
          DDNAME. AFTER A MATCHING CMSCB IS FOUND OR CREATED,
           IT  IS USED TO FILL  IN VACANT ENTRIES  IN THE
          DCB. IF THE MACLIB CONCAT OPTION IS ON IN THE CMSCB,
          OPEN CHECKS THE MACLIB NAMES IN THE GLOBAL LIST AND
          FILLS IN THE ADDRESSES OF OS FSTS FOR ANY MACLIBS THAT
          ARE ON OS DISKS. THE CMSCB OF THE 1ST MACLIB IN THE
          GLOBAL LIST IS USED FOR CMSCB MERGING AND INITIAL-
          IZATION.

          THE FOLLOWING  TABLE SHOWS  THE CMSCB  FIELDS THAT
          ARE USED TO COMPLETE DCB FILEDS NOT INITIALIZED BY
          THE USER PRIOR TO ISSUING  THE OPEN CALL.  IT ALSO
          SHOWS THE JFCBMASK BIT SETTING  WHICH IS ON IF THE
          ASSOCIATED CMSCB  FIELD MUST  BE USED.   IF THE CMSCB
          FIELDS ARE  NOT SPECIFIED  BY A  FILEDEF
          COMMAND, NO DEFAULTS  WILL BE USED TO  FILL IN THE
          RESPECTIVE FIELDS OF THE CMSCB.

          _______________________________________
          |    DCB    ||     FCB    |  JFCBMASK |
          |___________||____________|___________|
          |-----------||------------|-----------|
          |           ||            |           |
          | DCBBLKSI  ||  JFCBLKSI  |+2 X'10'   |
          | DCBDSORG  ||  JFCDSORG  |+3 X'01'   |
          | DCBLRECL  ||  JFCLRECL  |+3 X'02'   |
          | DCBRECFM  ||  JFCRECFM  |+2 X'04'   |
          | DCBKEYLE  ||  JFCKEYLE  |+3 X'20'   |
          | DCBOPTCD  ||  JFCOPTCD  |+2 X'80'   |
          | DCBLIMCT  ||  JFCLIMCT  |+2 X'40'   |
          |___________||____________|___________|


       SETTING UP A NEW CMSCB

          THIS ROUTINE IS ENTERED IF  IT IS NECESSARY TO SET
          UP  AND  INITIALIZE  A  NEW   CMSCB  FOR  THE  DCB
          CURRENTLY BEING OPENED.  IT ISSUES A FILEDEF
          WITH THE FOLLOWING FIELDS FILLED IN:


          ________________________________________________________
          |    FIELD   ||   CONTENT   |       DESCRIPTION        |
          |____________||_____________|__________________________|
          |------------||-------------|--------------------------|
          |  FCBSECT   ||   X'08'     | INDICATES OPEN ACQUIRED  |
          |            ||             |   THIS CMSCB.            |
          |  FCBDEV    ||   X'14'     | DISK DEFAULT             |
          |  FCBDSNAM  ||   FILENAME  | CMS FILENAME   ('FILE')  |
          |  FCBDD     ||   DCBDDNAM  | CMS FILETYPE             |
          |  FCBDSTYP  ||   DCBDDNAM  | CMS FILETYPE             |
          |  FCBDSMD   ||   FILEMODE  | CMS FILEMODE   ('A1')    |
          |____________||_____________|__________________________|




       SETTING UP CONTROL BLOCK POINTERS

          AFTER  THE  CMSCB  IS   INITIALIZED,  THE  ADDRESS
          POINTERS  ARE SET  TO LINK  THE VARIOUS  SIMULATED
          CONTROL BLOCKS.


          ___________________________________________________________
          |  CONTROL  |           ||                                |
          |  BLOCK    |   FIELD   || CONTENTS AFTER COMPLETION      |
          |___________|___________||________________________________|
          |           |           ||                                |
          |  DCB      | DCBDEBAD  || DEB ADDRESS                    |
          |  DCB      | DCBIOBAD  || IOB ADDRESS                    |
          |  DCB      | DCBIOBA   || IOB ADDRESS                    |
          |  DCB      | DCBIOBL   || LENGTH IN DOUBLE WORDS OF IOB  |
          |___________|___________||________________________________|
          |  IOB      | IOBDCBPT  || DCB POINTER                    |
          |___________|___________||________________________________|
          |  DEB      | DEBDCBAD  || DCB POINTER                    |
          |  DEB      | DEBDEBID  || X'0F' FLAG TO SHOW BLOCK IS DEB|
          |  DEB      | DEBOPATB  || OPEN OPTION BYTE               |
          |___________|___________||________________________________|

Calls to Other Routines

       DMSFLD, DMSSTT, DMSERS, DMSERR, DMSCPF, DMSTIO, DMSFNS,
       GETMAIN, OPEN EXIT ROUTINE, PDSSAVE AND KEYSAVE IN DMSSVT,
       GETPOOL, FIND, DMSSCTCE, DMSVIB, DMSVIP.