Table of Contents

DMKCQP Abstract

Statistics

Type ASSEMBLE
Source Lines : 1,371
Fixes Applied : 6
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC065DK]

Synopsis

Module

       DMKCQP

Function

       TO RETURN TO THE REQUESTOR INFORMATION FOR
       THE QUERY PAGING, PRIORITY, SYSTEM, LINKS, DUMP, HOLD, REAL,
       FREE, PROCESSOR, ALL, OR TERMINAL COMMAND.

Attributes

       REENTRANT, PAGEABLE, CALLED VIA SVC

Operation

       1. ISSUE SVC 16 TO RETURN THE SAVEAREA, THUS, WHEN EXIT
          WILL RETURN DIRECTLY TO DMKCFM COMMAND PROCESSING
          INSTEAD OF DMKCFMQU.
       2. THE PROPER ROUTINE IS ENTERED VIA A BRANCH TABLE.
          REGISTER 6 IS SET UP BY DMKCFMQU TO INDEX TO THE
          PROPER BRANCH INSTRUCTION.
       3. EACH ROUTINE SCANS THE APPROPRIATE CONTROL BLOKS TO
          PICK UP THE INFORMATION NEEDED FOR THE REQUEST AND FORMATS
          THE MESSAGE TO BE RETURNED TO THE USER.
           STEPS 4 AND 5 DELETED ... NO LONGER USED; PROCESSING
           MOVED TO MODULE DMKCQR.
       6. SYSTEM - CALL DMKSCNFD TO LOCATE THE RADDR ARGUMENT. IF
           NONE IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE
           DMKCQP021E. IF ONE FOUND, CALL DMKCVTHB TO CONVERT THIS
           ADDRESS TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG
           TO SEND ERROR MESSAGE DMKCQP021E. IF THE CONVERT WAS
           GOOD, CALL DMKSCNRU TO LOCATE THE RDEVBLOK ADDRESS FOR
           THIS DEVICE. IF THE RDEVBLOK CAN'T BE FOUND, CALL DMKERMSG
           TO SEND ERROR MESSAGE DMKCQP040E. IF BLOCK IS FOUND AND IT
           IS A DASDI DEVICE WHICH IS A CP-VOLUME CALL DMKFREE FOR
           A MESSAGE BUFFER AREA. PROCEED TO GET THE NAMES OF ALL
           USERS WHO ARE LINKED TO THIS VOLUME. AS THE MESSAGE
           OUTPUT LINES FILL CALL DMKQCNWT TO WRITE THE LINE TO THE
           USER. IF THE DEVICE IS NOT CP-OWNED TREAT THE REQUEST AS
           IF IT WERE FOR A SINGLE DEVICE.
           STEPS 7 AND 8 DELETED.  MOVED TO DMKCQR.
       9.  'DEVICE CLASS' - SET A FLAG IN SAVEWRK1 TO INDICATE
           WHICH TYPE OF REQUEST WAS RECEIVED. IF IT IS A STORAGE
           REQUEST, OBTAIN THE REAL STORAGE SIZE AND CALL DMKCVTBD
           TO CONVERT TO DECIMAL. PUT THIS IN THE MESSAGE AND CALL
           DMKQCNWT TO OUTPUT IT. FOR DEVICE TYPE REQUEST, SCAN
           THE REAL DEVICE BLOCKS AND WHEN A MATCH OCCURS ON THE
           REQUESTED DEVICE CLASS BUILD THE MESSAGE ACCORDING TO THE
           TYPE OF DEVICE AND ITS STATUS. THEN CALL DMKQCNWT TO
           OUTPUT THE MESSAGE. CHECK RDEVNRDY FLAG. IF ON, CALL
           DMKQCNWT AND OUTPUT INT REQ MESSAGE. CONTINUE DOING THIS
           UNTIL ALL RDEVBLOKS HAVE BEEN SCANNED.
           STEP 10 DELETED; PROCESSING MOVED TO DMKCQR.
       11. LINK - CALL DMKCVTHB TO CONVERT VADDR TO BINARY. IF
           ERROR DURING CONVERT CALL DMKERMSG TO ISSUE ERROR
           MESSAGE DMKCQP022E. IF VADDR IS VALID CALL DMKSCNVU TO
           LOCATE THE VIRTUAL DEVICE BLOCK. IF THE DEVICE IS NOT
           FOUND CALL DMKERMSG TO ISSUE ERROR MESSAGE DMKCQP040E. IF
           ADDRESS IS CORRECT CHECK THAT DEVICE IS DASDI. IF NOT
           DASDI ISSUE ERROR MESSAGE DMKCQP006E. IF ALL OF THE ABOVE
           REQUIREMENTS ARE MET, PROCEED TO FIND EACH USER ON THE
           SYSTEM THAT IS USING THE SAME DISK EXTENT, ON THE SAME
           CP-VOLUME THAT THIS USER HAS. CALL DMKQCNWT TO OUTPUT
           THE RESPONSE LINE. CONTINUE SCANNING ALL VDEVBLOKS IN THE
           SYSTEM UNTIL THE VDEVBLOKS ARE EXHAUSTED.

       12. TDSK - USE THE SAME LOOP AS QUERY LINKS ONLY PICK UP
           THE VIRTUAL DISKS MARKED AS TDSK ALLOCATED.
           THE VIRTUAL TDSKS INDICATE THE NUMBER OF CYLINDERS
           THE STACK ROUTINE IS USED TO STACK THE OUTPUT LINE.

       13. PROCESSOR - CALL DMKCVTBH TO CONVERT EACH ONLINE PROCESSOR
           ADDRESS TO PRINTABLE HEXADECIMAL THEN BUILD PROCESSOR
           ONLINE MESSAGE.  IN AP MODE, THE MAIN PROCESSOR WILL BE
           GIVEN FIRST.

Calls to Other Routines

       DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND BUFFER
       DMKSCNAU - TO FIND THE VMBLOK FOR A SPECFIC USERID
       DMKSCNVU - TO FIND CONTROL BLOKS FOR A VIRTUAL DEVICE
       DMKSCNRU - TO FIND CONTROL BLOKS FOR A REAL DEVICE
       DMKSCNRD - GET ADDRESS OF REAL DEVICE.
       DMKSCNRA - TO GET CCU ADDRESS OF REAL DEVICE
       DMKSCNRN - TO GET THE NAME OF THE DEVICE.
       DMKSCNVD - GET THE VIRTUAL DEVICE ADDRESS.
       DMKCVTHB - TO CONVERT HEXADECIMAL ADDRESS TO BINARY
       DMKCVTDB - TO CONVERT A DECIMAL NUMBER TO BINARY.
       DMKCVTBD - TO CONVERT A BINARY NUMBER TO DECIMAL
       DMKCVTBH - TO CONVERT A BINARY NUMBER TO HEXADECIMAL
       DMKFREE  - TO OBTAIN MEMORY FROM FREE STORAGE
       DMKFRET  - TO RETURN MEMORY TO FREE STORAGE
       DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL
       DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL.
       DMKRSPUR - TO FORMAT ACTIVE FILE MESSAGE
       DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES