*DECK DB$INFO 
          IDENT DB$INFO 
          SST 
          IPARAMS 
*#
* *   DB$INFO -- FILE INFORMATION FUNCTION       PAGE 1 
* *   R C KLOENNE                                02/02/78 
* 
* DC  PURPOSE 
* 
*     DETERMINE FILE ATTACH STATUS
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETER = FILE LFN
*     FORMAT IS:  42/0L<LFN>,18/STUFF 
* 
* DC  EXIT CONDITIONS 
* 
*     FUNCTION RETURN 
* 
*     BIT 
*     6     READ  PERM
*     7     WRITE PERM
*     8     EXTEND
*     9     MODIFY PERM 
*     10    READ/MODIFY MODE
*     11    READ/APPEND MODE
*     12    EXECUTE ONLY
* 
* 
*     15    FILE ON MASS STORAGE
*     16    FILE CONNECTED TO TERMINAL
*     17    OPEN
*     18    SEVEN TRACK TAPE
*     19    NINE TRACK TAPE 
*     20    LABELLED
*     21    BOI 
*     22    EOF 
*     23    EOI 
* 
* DC  CALLING ROUTINES
* 
*     DB$QRF - QUICK RECOVERY FILE PROCESSOR. 
*     DB$DS25 - *RELEASE* COMMAND PROCESSOR.
* 
* DC  CALLED ROUTINES 
* 
*     FILINFO MACRO          RETURNS INFORMATION ABOUT A FILE 
* 
* DC  DESCRIPTION 
* 
*     INSERT THE LFN INTO THE FIRST WORD OF THE 5-WORD PARAMETER BLOCK
*     FOR THE FILINFO MACRO.  THIS WORD MUST CONTAIN: 
*       BITS 59-18    LFN (LEFT-JUSTIFIED, ZERO-FILL) 
*       BITS 17-12    LENGTH OF PARAMETER BLOCK (5) 
*       BITS 11-1     0 
*       BIT  0        COMPLETE BIT
*     ISSUE THE FILINFO MACRO TO DETERMINE THE STATUS OF THE FILE, AND
*     STORE THE STATUS WORD TO BE RETURNED TO THE CALLER.  (IT IS NOT 
*     NECESSARY TO ISSUE A RECALL REQUEST ON THE PARAMETER BLOCK BEFORE 
*     CALLING FILINFO BECAUSE THE FILINFO MACRO WILL GENERATE THE PP
*     REQUEST WITH RECALL.) 
* 
*     NOTE:  BOTH IOTEXT AND NOSTEXT CONTAIN A VERSION OF THE 
*     FILINFO MACRO, BUT BOTH VERSIONS EXECUTE DIFFERENTLY. 
*     IF THE IOTEXT VERSION OF THE FILINFO MACRO IS USED, 
*     THEN THE COMPLETE BIT MUST BE CLEARED IN THE FIRST WORD 
*     OF THE PARAMETER BLOCK PASSED TO FILINFO, BECAUSE THE 
*     FILINFO MACRO MAKES A DIRECT PP REQUEST.
*     IF THE NOSTEXT VERSION OF THE FILINFO MACRO IS USED,
*     THEN THE COMPLETE BIT MUST BE SET WHEN THE FILINFO MACRO
*     IS CALLED, BECAUSE FILINFO CALLS LFM=, AND LFM= WILL
*     WAIT UNTIL THE PARAMETER BLOCK IS NOT BUSY BEFORE ISSUING 
*     A PP REQUEST. 
*     DB$INFO MUST USE THE VERSION OF THE FILINFO MACRO CONTAINED 
*     IN IOTEXT.  IF DB$INFO IS ASSEMBLED WITH AN INCORRECT 
*     VERSION OF THE FILINFO MACRO, AND DB$INFO IS CALLED,
*     THEN CDCS HANGS IN AUTO-RECALL AT THE SCP WAITING FOR THE 
*     COMPLETE BIT TO GET SET.
*#
          LIST   F
          ENTRY  DB$INFO
 DB$INFO  EQ     *+1S17 
          SA1    X1          PUT 1ST PARAM IN INTAB TABLE (LFN) 
          MX0    42D
          BX6    X0*X1
          SA2    INTAB
          BX2    -X0*X2 
          BX6    X6+X2
          MX0    59          CLEAR COMPLETE BIT 
          BX6    X0*X6
          SA6    A2          REPLACE FILINFO PARAMETER BLOCK WORD 0 
          FILINFO A6         CALL FILINFO TO DETERMINE FILE STATUS
          SA1    INTAB+1
          BX6    X1 
          EQ     DB$INFO
* 
*                            5-WORD PARAMETER BLOCK FOR FILINFO 
* 
 INTAB    VFD    42/0,6/5,12/1     (INTAB)=42/LFN,6/BLK LEN,12/COMP BIT 
          BSSZ   4
          END 
