*DECK DB$BGTF 
USETEXT BRGENTX 
      PROC DB$BGTF(ERRORFLAG);
      BEGIN 
 #
* *   DB$BGTF - GET TAPE FILE                    PAGE  1
* *   E. P. JOHNSON                              DATE  06/11/81 
* * 
* 
* DC  PURPOSE 
* 
*     TO GET A TAPE FILE ON NOS/BE VIA THE REQUEST MACRO. 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
# 
      ITEM ERRORFLAG B;                # ERROR FLAG - OUTPUT.          #
# 
*     ASSUMPTIONS 
* 
*     MDSCINFO               MD SCHEMA INFORMATION TABLE HAS BEEN 
*                            READ IN. 
*       MDSIJOBP             MD JOB CONTROL INFORMATION TABLE EXISTS. 
* 
* DC  EXIT CONDITIONS 
* 
*     NORMAL - THE FILE HAS BEEN REQUESTED WITHOUT ERROR. THE ERROR 
*              FLAG IS SET TO FALSE.
* 
*     ABNORMAL - AN ERROR OCCURRED DURING THE REQUEST. ERROR MESSAGE
*                DFERR12 IS ISSUED AND THE ERROR FLAG IS SET TO TRUE. 
* 
* DC  CALLING ROUTINES
* 
*     DB$BDLG                DUMP THE JOURNAL LOG FILE TO TAPE. 
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$BERR;               # DBREC ERROR PROCESSOR.        #
      XREF PROC DB$RCLL;               # WAIT FOR THE REQUEST TO       #
                                       # COMPLETE.                     #
      XREF PROC DB$RELA;               # REQUEST MACRO.                #
# 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     INSERTITEMI            SPECIAL MESSAGE TEXT FORMATER INTEGER
*                            INSERTION ITEM.
* 
* DC  DESCRIPTION 
* 
*     - SET THE BASED ARRAY POINTER OF THE MD JOB CONTROL INFORMATION 
*       (JCI) TABLE.
* 
*     - SET UP THE PARAMETER LIST.
* 
*     - IF THE TRACK TYPE SPECIFIED IN THE TABLE IS 7 TRACK, THEN SET 
*       THE 7 TRACK CODE INTO THE REQUEST PARAMETER LIST. ELSE SET THE
*       9 TRACK CODE INTO THE PARAMETER LIST. 
* 
*     - IF THE TAPE DENSITY IN THE TABLE IS DEFAULT, THEN SET THE 
*       DEFAULT DENSITY FLAG IN THE REQUEST PARAMETER LIST. ELSE EXTRACT
*       THE APPROPRIATE DENSITY CODE FROM THE DENSITY TABLE, USING THE
*       TAPE DENSITY FIELD (FROM THE JCI TABLE) AS A SUBSCRIPT, 
*       AND PLACE IT INTO THE DENSITY FIELD OF THE PARAMETER LIST.
* 
*     - ISSUE THE REQUEST MACRO.
* 
*     - IF AN ERROR OCCURRED DURING THE REQUEST, THEN ISSUE AN ERROR
*       MESSAGE AND SET THE ERROR FLAG TO TRUE. ELSE SET THE ERROR FLAG 
*       TO FALSE. 
* 
*     - RETURN TO THE CALLER. 
* 
 #
  
# LOCAL DEFS.                                                          #
  
      DEF DFDENDEFAULT #0#;            # DEFAULT DENSITY CODE.         #
      DEF DFDENGELO    #1#;            # GE AND LO DENSITY CODE.       #
      DEF DFDENHDHY    #2#;            # HD AND HY DENSITY CODE.       #
      DEF DFDENHI      #0#;            # HI DENSITY CODE.              #
      DEF DFDENPE      #3#;            # PE DENSITY CODE.              #
      DEF DFDENTBLUB   #6#;            # ARRAY UPPER BOUND OF THE      #
                                       # DENSITY TABLE.                #
      DEF DFLOGDUMP #"LOGDUMP"#;       # LFN OF THE TAPE FILE.         #
      DEF DFPLISTLEN   #2#;            # PARAMETER LIST LENGTH IN WORDS#
      DEF DF7TRACK #O"40"#;            # 7 TRACK CODE.                 #
      DEF DF9TRACK #O"41"#;            # 9 TRACK CODE.                 #
  
# LOCAL VARIABLES.                                                     #
  
      ARRAY PARAMLIST [0:0] S(DFPLISTLEN);
                                       # REQUEST MACRO PARAMETER LIST. #
        BEGIN 
        ITEM PARWD0   U(00,00,60);     # FULL WORD.                    #
        ITEM PARLFN   C(00,00,07);     # LOGICAL FILE NAME.            #
                                       # FIELD IN BITS 42-45 IS NOT    #
                                       # REFERENCED.                   #
        ITEM PARERR   U(00,46,05);     # ERROR STATUS.                 #
                                       # FIELD IN BITS 51-59 IS NOT    #
                                       # REFERENCED.                   #
        ITEM PARWD1   U(01,00,60);     # FULL WORD.                    #
                                       # FLAGS IN BITS 0-6 ARE NOT     #
                                       # REFERENCED.                   #
        ITEM PARRING  B(01,07,01);     # WRITE ENABLE RING IS REQUIRED.#
                                       # FLAGS IN BITS 8-43 ARE NOT    #
                                       # REFERENCED.                   #
        ITEM PARDFDN  B(01,44,01);     # USE DEFAULT TAPE DENSITY.     #
        ITEM PARSAVE  B(01,45,01);     # OUTPUT TAPE IS TO BE SAVED.   #
                                       # FLAGS IN BITS 46-47 ARE NOT   #
                                       # REFERENCED.                   #
        ITEM PARTTYP  U(01,48,06);     # TAPE TRACK TYPE.              #
        ITEM PARDFORM U(01,54,02);     # TAPE DATA FORMAT.             #
        ITEM PARTLABL U(01,56,02);     # TAPE LABEL TYPE.              #
        ITEM PARTDEN  U(01,58,02);     # TAPE DENSITY.                 #
        END 
  
  
      ARRAY DENSITY [0:DFDENTBLUB];    # TAPE DENSITY TABLE.           #
        BEGIN 
        ITEM DENCODE U(00,00,02) =
  
          [ DFDENDEFAULT,              # DEFAULT DENSITY - SUBSCRIPT   #
                                       # NOT REFERENCED.               #
            DFDENHDHY,                 # HD (800 CPI) DENSITY.         #
            DFDENPE,                   # PE (1600 CPI) DENSITY.        #
            DFDENGELO,                 # GE (6250 CPI) DENSITY.        #
            DFDENGELO,                 # LO (200 BPI) DENSITY.         #
            DFDENHI,                   # HI (556 BPI) DENSITY.         #
            DFDENHDHY ];               # HY (800 BPI) DENSITY.         #
        END 
  
  
      BASED ARRAY MDJOB;
        BEGIN 
*CALL MDJOBDCLS 
        END 
  
  
# S T A R T   O F   D B $ B G T F   E X E C U T A B L E   C O D E      #
  
  
# SET THE BASED ARRAY POINTER OF THE MD JOB CONTROL INFORMATION (JCI)  #
# TABLE.                                                               #
  
      P<MDJOB> = LOC(MDSCINFO) + MDSIJOBP[0]; 
  
# SET UP THE PARAMETER LIST.                                           #
  
      PARWD0[0] = 0;
      PARLFN[0] = DFLOGDUMP;           # LFN.                          #
      PARWD1[0] = 0;
      PARRING[0] = TRUE;               # WRITE ENABLE RING IS REQUIRED.#
      PARSAVE[0] = TRUE;               # OUTPUT TAPE IS TO BE SAVED.   #
      PARDFORM[0] = 0;                 # TAPE DATA FORMAT - SI, BINARY.#
      PARTLABL[0] = 1;                 # TAPE LABEL TYPE - SI STANDARD #
                                       # U.                            #
  
# IF THE TRACK TYPE SPECIFIED IN THE TABLE IS 7 TRACK, THEN SET THE 7  #
# TRACK CODE INTO THE PARAMETER LIST. ELSE SET THE 9 TRACK CODE INTO   #
# THE PARAMETER LIST.                                                  #
  
      IF MDJOBTTYP[0] 
      THEN
        BEGIN 
        PARTTYP[0] = DF7TRACK;
        END 
      ELSE
        BEGIN 
        PARTTYP[0] = DF9TRACK;
        END 
  
# IF THE TAPE DENSITY IN THE TABLE IS DEFAULT, THEN SET THE DEFAULT    #
# DENSITY FLAG IN THE PARAMETER LIST. ELSE EXTRACT THE APPROPRIATE     #
# DENSITY CODE FROM THE DENSITY TABLE, USING THE TAPE DENSITY FIELD    #
# (FROM THE JCI TABLE) AS A SUBSCRIPT, AND PLACE IT INTO THE DENSITY   #
# FIELD OF THE PARAMETER LIST.                                         #
  
      IF MDJOBTDEN[0] EQ 0
      THEN
        BEGIN 
        PARDFDN[0] = TRUE;
        END 
      ELSE
        BEGIN 
        PARTDEN[0] = DENCODE[MDJOBTDEN[0]]; 
        END 
  
# ISSUE THE REQUEST MACRO.                                             #
  
      DB$RELA(LOC(PARAMLIST));
      DB$RCLL(LOC(PARAMLIST));         # WAIT FOR REQUEST TO           #
                                       # COMPLETE.                     #
  
# IF AN ERROR OCCURRED DURING THE REQUEST, THEN ISSUE AN ERROR MESSAGE #
# AND SET THE ERROR FLAG TO TRUE. ELSE SET THE ERROR FLAG TO FALSE.    #
  
      IF PARERR[0] NQ 0 
      THEN
        BEGIN 
        INSERTITEMI = PARERR[0];
        DB$BERR(DFERR12); 
        ERRORFLAG = TRUE; 
        END 
      ELSE
        BEGIN 
        ERRORFLAG = FALSE;
        END 
  
# RETURN TO THE CALLER.                                                #
  
      RETURN; 
  
  
      END 
      TERM
