*DECK DB$SRTF                                                            SRTF 
USETEXT MD10CTX 
USETEXT SCANTXT 
USETEXT MDBCMTX 
      PROC DB$SRTF;                                                      SRTF 
 #                                                                       SRTF 
  *   DB$SRTF - TEST FLAGS SEMANTIC ROUTINES     PAGE  1                 SRTF 
  *   J. JAN JANIK                               DATE  11/17/75          SRTF 
  *   A. W. LO                                   DATE  05/08/77 
  *   G. F. KENDALL (DB$SR70, 73, 76, 78)        DATE  08/30/79 
  *   R. M. PAPPE                                DATE  09/11/80 
  *   H.S.WOO                                    DATE  04/08/81 
  *   KIM H. NGUYEN                              DATE  11/09/84 
  
  DC  PURPOSE                                                            SRTF 
                                                                         SRTF 
      A COLLECTION OF SIMPLE PROCS WHICH TEST FLAGS OR VALUES AND        SRTF 
      RETURN TO DB$NO OR DB$YES AFTER POSSIBLY CALLING DB$DIAG. 
  
  DC  ENTRY CONDITIONS
  
      THE FOLLOWING SHOULD HAVE PROPER VALUES, AS APPROPRIATE TO THE
      PARTICULAR SEMANTIC ROUTINE WITHIN DB$SRTF WHICH IS CALLED: 
      DB$CP1, DB$CTYP, AND DB$CXID - CURRENT SOURCE WORD VALUES 
      DB$NP1, DB$NP2, AND DB$NTYP - NEXT SOURCE WORD VALUES 
      EOTFLAG - END-OF-RECORD/TRANSMISSIN FLAG IN (1,0) COMMON
      FILENAM, MODERR, RSTSCAN, RUNTYPE, SCFATAL, SCFILE, AREACHGF, 
      VERSNAM - MDBCMTX OR MD10CTX COMMON ITEMS 
      MDPFINAME, MDPFUNID, MDPFVSN, MDPFSNF - WITHIN
      MDPFINFO IN (1,0) COMMON
      CURFILTYP - VALUE OF THE CURRENT FILE TYPE
      JOBUN, JOBPW, JOBFAM, TAPEFLAGS - JOB INFO IN (1,0) COMMON
  
                                                                         SRTF 
  DC  EXIT CONDITIONS                                                    SRTF 
                                                                         SRTF 
      ALL PROCS EXIT THRU DB$YES OR DB$NO.                               SRTF 
      DB$SR05 - DB$YES IF DB$NP1 = 2, NEXT WORD IS A PF-TYPE WORD 
      DB$SR08 - DB$YES IF BOTH USERNUM AND PFNAME ARE NON-ZERO           SRTF 
      DB$SR09 - DB$YES IF FILENAM IS NON-ZERO                            SRTF 
      DB$SR17 - DB$YES IF DB$CP1 = 3,4,5 OR 6, CURWORD IS A MOD WORD     SRTF 
      DB$SR19 - DB$YES IF DB$NP1 = 1, NEXT WORD IS A SCHEMA-TYPE WORD    SRTF 
      DB$SR42 - DB$YES IF DB$CP1 = 4, ADD IS CURWORD                     SRTF 
      DB$SR43 - DB$YES IF RUN IS A CREATION RUN, RUNTYPE = 0             SRTF 
      DB$SR44 - DB$YES IF DB$CP1 = 5, DELETE IS CURWORD                  SRTF 
      DB$SR45 - DB$YES IF DB$CTYP OR DB$NTYP = DFEOTCOD, EOT DETECTED 
      DB$SR46 - DB$YES IF MODERR IS SET, ERR IN PROCESSING MODIFY DIRS.  SRTF 
      DB$SR47 - DB$YES IF DB$CP1 = 6, MODIFY IS CURWORD                  SRTF 
      DB$SR49 - DB$YES IF RSTSCAN = 1, NOT FIRST TIME THRU               SRTF 
      DB$SR50 - DB$YES IF SCFATAL = 1, FATAL ERR IN SCHEMA PROCESSING    SRTF 
      DB$SR51 - DB$YES IF DB$CP1 = 3, CURWORD IS SCHEMA                  SRTF 
      DB$SR55 - DB$YES IF TRF/RIF SPECIFIED 
      DB$SR65 - DB$YES IF DB$NXID = 10B, NEXWORD = "AREA" 
      DB$SR76 - DB$YES IF CHANGE AREA CLAUSE SEEN 
      DB$SR78 - DB$YES IF SCHEMA FILE WAS SPECIFIED 
      DB$SR79 - DB$YES IF NEXT WORD IS A PERIOD (DB$NP1 = 12B)
      DB$SR81 - DB$YES IF NEXT WORD IS AREA-TYPE (DB$NP1 = 4 OR 7)
      DB$SR91 - DB$NO  IF CURRENT VERSION NAME IS MASTER
      DB$SR92 - DB$YES IF BOTH SETNAME AND VSN SPECIFIED
      DB$SR93 - DB$YES IF NO ERRORS IN JOB CONTROL INFORMATION
      DB$SR1F - DB$YES  IF FIRST OCCURRENCE OF TYPE CLAUSE
      DB$SR1G - DB$YES  IF FIRST OCCURRENCE OF DENSITY CLAUSE 
      DB$SR1J - DB$YES IF END-OF-RECORD FOUND (EOTFLAG = TRUE)
  
                                                                         SRTF 
  DC  CALLING ROUTINES                                                   SRTF 
                                                                         SRTF 
      DB$STD - SYNTAX TABLE DRIVER                                       SRTF 
                                                                         SRTF 
  DC  CALLED ROUTINES                                                    SRTF 
                                                                         SRTF 
      DB$NO  - RETURN TO STD, NO SIDE OF TRANSFER SYMBOL                 SRTF 
      DB$YES - RETURN TO STD, YES SIDE OF TRANSFER SYMBOL                SRTF 
                                                                         SRTF 
  DC  NON-LOCAL VARIABLES                                                SRTF 
                                                                         SRTF 
     SEE SPECIFIC ROUTINES FOR NON-LOCAL VARIABLES MODIFIED 
 #                                                                       SRTF 
      CONTROL EJECT;                                                     SRTF 
      BEGIN                                                              SRTF 
                                                                         SRTF 
      DEF DFEOTCOD #12#;     # CODE IN DB$NTYP WHEN EOT DETECTED       # JJJ1212
      XDEF                                                               SRTF 
        BEGIN                                                            SRTF 
        PROC DB$SR05;                                                    SRTF 
        PROC DB$SR08;                                                    SRTF 
        PROC DB$SR09;                                                    SRTF 
        PROC DB$SR17;                                                    SRTF 
        PROC DB$SR19;                                                    SRTF 
        PROC DB$SR42;                                                    SRTF 
        PROC DB$SR43;                                                    SRTF 
        PROC DB$SR44;                                                    SRTF 
        PROC DB$SR45;                                                    SRTF 
        PROC DB$SR46;                                                    SRTF 
        PROC DB$SR47;                                                    SRTF 
        PROC DB$SR49;                                                    SRTF 
        PROC DB$SR50;                                                    SRTF 
        PROC DB$SR51;                                                    SRTF 
        PROC DB$SR55; 
        PROC DB$SR65; 
        PROC DB$SR76; 
        PROC DB$SR78; 
        PROC DB$SR79; 
        PROC DB$SR81; 
        PROC DB$SR91; 
        PROC DB$SR92; 
        PROC DB$SR93; 
        PROC DB$SR1F; 
        PROC DB$SR1G; 
        PROC DB$SR1J; 
        END                                                              SRTF 
                                                                         SRTF 
      XREF                                                               SRTF 
        BEGIN                                                            SRTF 
                                                                         SRTF 
        PROC DB$DIAG;        # ISSUE DIAGNOSTICS                       #
        PROC DB$NO;          #RETURN TO STD, NO SIDE OF TRANSFER SYMBOL# SRTF 
        PROC DB$YES;         #RETURN TO STD, YES SIDE                  # SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR05;          # IS NEXT WORD A PF-TYPE WORD             #
        BEGIN                                                            SRTF 
        IF DB$NP1 EQ 2 THEN DB$YES;  ELSE DB$NO;                         SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR08;          # DB$YES IF UN/ID AND PFN SUPPLIED        # SRTF 
        BEGIN                                                            SRTF 
        IF MDPFUNID[CURFILTYP] EQ 0 
          OR MDPFINAME[CURFILTYP] EQ 0
        THEN
          BEGIN 
          DB$NO;
  
          END 
        DB$YES;                                                          SRTF 
  
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR09;          # DB$YES IF LFN SUPPLIED FOR SCHEMA       # SRTF 
        BEGIN                                                            SRTF 
        IF B<0,6> FILENAM EQ 0 THEN DB$NO;                               SRTF 
        DB$YES;                                                          SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR17;                                                      SRTF 
        BEGIN                                                            SRTF 
        IF DB$CP1 GQ 3 AND DB$CP1 LQ 7
          THEN DB$YES;       #CURWORD IS SCHEMA, ADD, DELETE, OR MODIFY# SRTF 
          ELSE DB$NO;                                                    SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR19;          # IS NEXT WORD SCHEMA-TYPE WORD           # SRTF 
        BEGIN                                                            SRTF 
        IF DB$NP1 EQ 1 THEN DB$YES;  ELSE DB$NO;                         SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR42;          # IS CURRENT WORD ADD                     # SRTF 
        BEGIN                                                            SRTF 
        IF DB$CP1 EQ 7
        THEN
          BEGIN 
          DB$YES; 
  
          END 
        ELSE
          BEGIN 
          DB$NO;
  
          END 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR43;          # IS RUN A CREATION RUN                   # SRTF 
        BEGIN                                                            SRTF 
        IF RUNTYPE EQ 0 THEN DB$YES;  ELSE DB$NO;                        SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR44;          # IS CURRENT WORD DELETE                  # SRTF 
        BEGIN                                                            SRTF 
        IF DB$CP1 EQ 5 THEN DB$YES;  ELSE DB$NO;                         SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR45;          # HAS EOT BEEN DETECTED                   # SRTF 
        BEGIN                                                            SRTF 
        IF DB$CTYP EQ DFEOTCOD OR DB$NTYP EQ DFEOTCOD      # IF EOT # 
          THEN DB$YES;                                     # YES EOT #
          ELSE DB$NO;                                      # NO EOT # 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR46;          # IS THIS MODIFY SET ERROR FREE           #
        BEGIN                                                            SRTF 
        IF MODERR NQ 0 THEN DB$NO;   ELSE DB$YES; 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR47;          # IS CURRENT WORD MODIFY                  # SRTF 
        BEGIN                                                            SRTF 
        IF DB$CP1 EQ 6 THEN DB$YES;  ELSE DB$NO;                         SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR49;          # IS THIS A RESTART OF SCANNER            # SRTF 
        BEGIN                                                            SRTF 
        IF RSTSCAN NQ 0 THEN DB$YES;  ELSE DB$NO;                        SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR50;          # HAS AN ERR OCCURRED IN SCHEMA SET       # SRTF 
        BEGIN                                                            SRTF 
        IF SCFATAL NQ 0 THEN DB$YES;  ELSE DB$NO;                        SRTF 
        END                                                              SRTF 
                                                                         SRTF 
                                                                         SRTF 
                                                                         SRTF 
      PROC DB$SR51;          # IS CURRENT WORD SCHEMA                  # SRTF 
        BEGIN                                                            SRTF 
        IF DB$CP1 EQ 3 THEN DB$YES;  ELSE DB$NO;                         SRTF 
        END                                                              SRTF 
  
  
  
      CONTROL EJECT;
      PROC DB$SR55; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR55 - CHECK THAT TRF WAS SELECTED 
* *             IF RIF SPECIFIED
* *   R. M. PAPPE                                DATE  07/29/80 
* 
* DC  PURPOSE 
* 
*     CHECK THAT THE TRF (TRANSACTION RECOVERY FILE) OPTION 
*     WAS SELECTED IF THE RIF (RESTART IDENTIFIER FILE) WAS SELECTED
*     FOR THE SCHEMA. 
* 
* DC  ENTRY CONDITIONS
* 
*     A COMPLETE SCHEMA ENTRY HAS BEEN PROCESSED BY SCHNTRY 
* 
* DC  EXIT CONDITIONS 
* 
*     IF THE OPTIONS ADHERE TO THE MD RULES RETURN IS TO DB$YES,
*     OTHERWISE RETURN IS TO DB$NO. 
* 
* DC  CALLING ROUTINES
* 
*     SCHNTRY - BUILD A COMPLETE SCHEMA ENTRY (WITHIN DB$SNTX)
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO    -  SYNTAX TABLE DRIVER -NO- RETURN 
*     DB$YES   -  SYNTAX TABLE DRIVER -YES- RETURN
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     CHECK THAT THE TRANSACTION RECOVERY FILE
*     OPTION WAS SELECTED IF THE RESTART IDENTIFIER CLAUSE WAS
*     SPECIFIED FOR THE SCHEMA. 
*     RETURN IS TO DB$YES IF OPTIONS SELECTED ARE VALID.
*     RETURN IS TO DB$NO IF THE OPTIONS SELECTED ARE INVALID. 
* 
 #
  
  
      IF MDPFINAME[FILETYPE"RIF"] NQ 0
        AND MDPFINAME[FILETYPE"TRF"] EQ 0 
      THEN
        BEGIN 
        DB$NO;
  
        END 
      DB$YES; 
  
      END 
      CONTROL EJECT;
      PROC DB$SR65; 
        BEGIN 
        IF DB$NXID EQ O"10" THEN   # IF NEXT WORD IS "AREA"            #
          DB$YES; 
  
        DB$NO;
  
        END 
  
  
      PROC DB$SR70;          # IS NEXT WORD A -CHANGE AREA- TYPE WORD  #
        BEGIN 
        IF DB$NP2 EQ 1
        THEN
          DB$YES; 
  
        ELSE
          DB$NO;
  
        END 
  
  
      PROC DB$SR76;          # HAS CHANGE AREA CLAUSE BEEN SEEN        #
        BEGIN 
        IF AREACHGF 
          THEN
          BEGIN 
          DB$YES; 
  
          END 
        DB$NO;
  
        END 
  
      PROC DB$SR78;  # HAS A SCHEMA FILE CLAUSE APPEARED               #
        BEGIN 
        IF SCFILE 
        THEN
          DB$YES; 
  
        ELSE
          DB$NO;
  
        END 
  
      CONTROL EJECT;
      PROC DB$SR79; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR79 - CHECK IF NEXT WORD IS 
* *             A PERIOD
* *   J. G. SERPA                                DATE  07/15/80 
* *   R. M. PAPPE                                DATE  09/11/80 
* 
* DC  PURPOSE 
* 
*     CHECK IF THE NEXT WORD IN INPUT IS A PERIOD.
* 
* DC  ENTRY CONDITIONS
* 
*     DB$NP1 - CONTAINS THE VALUE OF THE NEXT WORD
* 
* DC  EXIT CONDITIONS 
* 
*     RETURN TO DB$YES IF NEXT WORD IS A PERIOD, ELSE RETURN TO DB$NO.
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO   - SYNTAX TABLE DRIVER -NO- RETURN 
*     DB$YES  - SYNTAX TABLE DRIVER -YES- RETURN
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     IF NEXWORD IS A PERIOD (DB$NP1 = 12B) RETURN TO DB$YES, OTHERWISE 
*     RETURN TO DB$NO.
* 
 #
  
      IF DB$NP1 EQ O"12"
      THEN
        BEGIN 
        DB$YES; 
  
        END 
      DB$NO;
  
      END 
      CONTROL EJECT;
      PROC DB$SR81; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR81 - CHECK IF NEXT WORD IS 
* *             AREA-TYPE WORD
* *   R. M. PAPPE                                DATE  07/25/80 
* 
* DC  PURPOSE 
* 
*     CHECK IF THE NEXT WORD IN INPUT IS AN AREA-TYPE WORD. 
*     AREA-TYPE WORDS ARE RECOVER AND LOG.
* 
* DC  ENTRY CONDITIONS
* 
*     DB$NP1 - CONTAINS THE VALUE OF THE NEXT WORD
* 
* DC  EXIT CONDITIONS 
* 
*     RETURN TO DB$YES IF DB$NP1 IS EQUAL TO 4. OTHERWISE,
*     RETURN IS TO DB$NO. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO   - SYNTAX TABLE DRIVER -NO- RETURN 
*     DB$YES  - SYNTAX TABLE DRIVER -YES- RETURN
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     IF NEXT WORD IS AN AREA-TYPE WORD (DB$NP1 = 4)
*     RETURN IS TO DB$YES, OTHERWISE RETURN IS TO DB$NO.
* 
 #
  
      IF DB$NP1 EQ 4
      THEN
        BEGIN 
        DB$YES; 
  
        END 
      DB$NO;
  
      END 
      CONTROL EJECT;
      PROC DB$SR91; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR91 - CHECK IF CURRENT VERSION NAME 
* *             IS MASTER 
* *   R. M. PAPPE                                DATE  08/01/80 
* 
* DC  PURPOSE 
* 
*     CHECK IF THE CURRENT VERSION IS THE MASTER VERSION. 
*     THE MASTER VERSION IS INDICATED BY CELL VERSNAM CONTAINING
*     THE CHARACTER STRING "MASTER" OR ALL BLANKS.
* 
* DC  ENTRY CONDITIONS
* 
*     VERSNAM - CONTAINS THE CURRENT VERSION NAME 
* 
* DC  EXIT CONDITIONS 
* 
*     RETURN IS TO DB$NO IF VERSNAM CONTAINS "MASTER" OR BLANKS.
*     OTHERWISE, RETURN IS TO DB$YES. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO   - SYNTAX TABLE DRIVER -NO- RETURN 
*     DB$YES  - SYNTAX TABLE DRIVER -YES- RETURN
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     IF CELL VERSNAM IS EQUAL TO "MASTER" OR BLANK 
*     RETURN IS TO DB$NO, OTHERWISE RETURN IS TO DB$YES.
* 
 #
  
      IF VERSNAM EQ "MASTER " 
        OR VERSNAM EQ " " 
      THEN
        BEGIN 
        DB$NO;
  
        END 
      DB$YES; 
  
      END 
      CONTROL EJECT;
      PROC DB$SR92; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR92 - CHECK THAT SET SPECIFIED
* *             IF VSN SPECIFIED OR VICE VERSA
* *   R. M. PAPPE                                DATE  08/05/80 
* 
* DC  PURPOSE 
* 
*     CHECK THAT SET WAS SPECIFIED IF VSN WAS SPECIFIED 
*     OR THAT VSN WAS SPECIFIED IF SET WAS SPECIFIED
* 
* DC  ENTRY CONDITIONS
* 
*     CURFILTYP - CONTAINS THE VALUE OF THE CURRENT FILE TYPE 
*     MDPFVSN   - CONTAINS THE VSN
* 
* DC  EXIT CONDITIONS 
* 
*     RETURN IS TO DB$NO IF CONDITIONS NOT MET, OTHERWISE 
*     RETURN IS TO DB$YES.
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO   - SYNTAX TABLE DRIVER -NO- RETURN 
*     DB$YES  - SYNTAX TABLE DRIVER -YES- RETURN
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     CHECK THAT MDPFVSN FOR THE CURRENT FILE TYPE CONTAINS 
*     INFORMATION IF MDPFSNF (SETNAME FLAG) IS SET. 
*     IF MDPFVSN CONTAINS INFORMATION AND MDPFSNF IS SET, OR
*     MDPFVSN IS EQUAL TO ZERO AND MDPFSNF IS NOT SET,
*     RETURN IS TO DB$YES. OTHERWISE, RETURN IS TO DB$NO. 
* 
 #
  
      IF (MDPFVSN[CURFILTYP] NQ 0 
        AND MDPFSNF[CURFILTYP]) 
        OR (MDPFVSN[CURFILTYP] EQ 0 
        AND NOT MDPFSNF[CURFILTYP]) 
      THEN
        BEGIN 
        DB$YES; 
  
        END 
      DB$NO;
  
      END 
      CONTROL EJECT;
      PROC DB$SR93; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR93 - VALIDATE JOB CONTROL INFORMATION
* *   J. G. SERPA                                DATE  02/03/81 
* *   R. M. PAPPE                                DATE  06/29/81 
  *   KIM H. NGUYEN                              DATE  11/09/84 
* 
* DC  PURPOSE 
* 
*     VALIDATE THAT SUFFICIENT JOB CONTROL INFORMATION HAS
*     BEEN SPECIFIED, AND THAT THE TAPE TYPE AND DENSITY
*     OPTION SELECTED DO NOT CONFLICT.
* 
* DC  ENTRY CONDITIONS
* 
*     JOBFAM    - CONTAINS THE FAMILY NAME
*     JOBPW     - CONTAINS THE PASSWORD 
*     JOBUN     - CONTAINS THE USER NAME
*     TAPEFLAGS - CONTAIN TAPE TYPE AND DENSITY OPTIONS SELECTED
* 
* DC  EXIT CONDITIONS 
* 
*     IF INSUFFICIENT JOB CONTROL INFORMATION IS SPECIFIED, DIAGNOSTIC
*     165 IS ISSUED. IF THE TAPE TYPE AND DENSITY OPTIONS SELECTED
*     CONFLICT, DIAGNOSTIC 167 IS ISSUED. IF ANY ERRORS ARE DETECTED
*     RETURN IS VIA DB$NO. IF NO ERRORS ARE ENCOUNTERED, STORE TAPE 
*     TYPE AND TAPE DENSITY, AND RETURN VIA DB$YES. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$DIAG - ISSUE DIAGNOSTICS 
*     DB$NO   - SYNTAX TABLE DRIVER -NO- RETURN.
*     DB$YES  - SYNTAX TABLE DRIVER -YES- RETURN. 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     DENSITY      - TAPE DENSITY TO BE STORED IN SIT 
*     TRACKTYPE    - TAPE TYPE (MT OR NT) TO BE STORED IN SIT 
* 
* DC  DESCRIPTION 
* 
*     THE MINIMUM REQUIRED JOB CONTROL INFORMATION VARIES FROM NOS
*     TO NOS/BE. ON NOS, A MINIMUM OF USER NAME AND PASSWORD ARE
*     REQUIRED. FAMILY AND CHARGE ARE INSTALLATION OPTIONAL. ON 
*     NOS/BE, ONLY ACCOUNT IS ALLOWED. SINCE THE MASTER DIRECTORY 
*     UTILITY IS NOT SYSTEM DEPENDENT, IT CANNOT FULLY VERIFY 
*     HOW MUCH JOB CONTROL INFORMATION IS REQUIRED. 
*     THE FOLLOWING CHECKS ARE PERFORMED: 
*         IF FAMILY IS SPECIFIED, THEN BOTH USER NAME AND PASSWORD
*         MUST BE SPECIFIED.
*         IF PASSWORD IS SPECIFIED, THEN USER NAME MUST BE SPECIFIED. 
*     NO CHECK IS MADE TO ENSURE THAT CHARGE/ACCOUNT IS SPECIFIED.
* 
*     FOR TAPE TYPE AND DENSITY OPTIONS THE FOLLOWING CHECKS
*     ARE MADE: 
*       IF TAPE TYPE IS -MT-, THEN THE DENSITY OPTION (IF SELECTED) 
*       MUST BE LO, HI, OR HY.
*       IF TAPE TYPE IS -NT-, THEN THE DENSITY OPTION (IF SELECTED) 
*       MUST BE HD, PE, OR GE.
*     DEFAULT VALUES ARE ASSIGNED IF NEITHER OPTION IS SELECTED, OR IF
*     JUST ONE OF THE OPTIONS IS SELECTED.
*     DIAGNOSTIC 165 IS ISSUED IF THE TEST FOR UN/PW/FAMILY FAILS.
*     DIAGNOSTIC 167 IS ISSUED IF THE TAPE TYPE AND DENSITY OPTIONS 
*     SELECTED CONFLICT.
*     IF ANY TEST FAILS, RETURN IS TO DB$NO. OTHERWISE, STORE TAPE TYPE 
*     AND TAPE DENSITY AND RETURN TO DB$YES.
* 
 #
  
      CONTROL EJECT;
  
      IF (JOBFAM NQ " "            # IF FAMILY SPECIFIED               #
        AND (JOBUN EQ " " OR JOBPW EQ " "))  # WITHOUT UN OR PW        #
        OR  (JOBPW NQ " " AND JOBUN EQ " ")  # OR WITH PW AND NO  UN   #
      THEN
        BEGIN 
        DB$DIAG(165);              # ERROR                             #
        DB$NO;
  
        END 
  
      IF (PROCFLAG[0]              # IF CCLPROC CLAUSE IS SPECIFIED    #
          AND CCLPROCNAME EQ " " )    # WITHOUT CCLPROC FILE NAME      #
      THEN
        BEGIN 
        DB$DIAG(174);              # ERROR                             #
        DB$NO;
  
        END 
      IF PROCFLAG[0]               # BOTH CCLPROC AND TAPE CLAUSES ARE #
         AND TAPEFLAG[0]           # SPECIFIED                         #
      THEN
        BEGIN 
        DB$DIAG(172); 
        DB$NO;
  
        END 
  
#   CHECK THAT TRACK TYPE AND DENSITY OPTIONS SELECTED ARE CORRECT     #
#   IF THE TAPE CLAUSE IS SPECIFIED                                    #
      IF TAPEFLAG[0]
      THEN
        BEGIN 
        IF NTFLAG[0]               # TAPE TYPE IS NINE TRACK           #
          AND (LOFLAG[0]           # BUT DENSITY SELECTED IS 7 TRACK   #
          OR HIFLAG[0]
          OR HYFLAG[0]) 
        THEN
          BEGIN 
          DB$DIAG(167);            # ERROR                             #
          DB$NO;
  
          END 
        IF MTFLAG[0]               # TAPE TYPE IS SEVEN TRACK          #
          AND (HDFLAG[0]           # BUT DENSITY SELECTED IS 9 TRACK   #
          OR PEFLAG[0]
          OR GEFLAG[0]) 
        THEN
          BEGIN 
          DB$DIAG(167);            # ERROR                             #
          DB$NO;
  
          END 
  
# IF A SEVEN TRACK DENSITY OPTION WAS SELECTED BUT TAPE TYPE WAS NOT   #
# SPECIFIED, SET THE TRACK TYPE TO SEVEN TRACK                         #
  
        IF (LOFLAG[0] OR HIFLAG[0] OR HYFLAG[0])
          AND NOT MTFLAG[0] 
        THEN
          BEGIN 
          TRACKTYPE = TRUE; 
          END 
  
        IF MTFLAG[0]                 # IF SEVEN TRACK OPTION SPECIFIED #
        THEN
          BEGIN 
          TRACKTYPE = TRUE;          # SET TRACK TYPE TO TRUE          #
          END 
  
        IF DENSFLAG[0]               # SET DENSITY OPTION IF SELECTED  #
        THEN
          BEGIN 
          IF LOFLAG[0]               # IF LO DENSITY SPECIFIED         #
          THEN
            BEGIN 
            DENSITY = DFTAPELO;      # SET DENSITY TO LO VALUE         #
            END 
          IF HIFLAG[0]               # IF HI DENSITY SELECTED          #
          THEN
            BEGIN 
            DENSITY = DFTAPEHI;      # SET DENSITY TO HI VALUE         #
            END 
          IF HYFLAG[0]               # IF HY DENSITY SELECTED          #
          THEN
            BEGIN 
            DENSITY = DFTAPEHY;      # SET DENSITY TO HY VALUE         #
            END 
          IF HDFLAG[0]               # IF HD DENSITY SELECTED          #
          THEN
            BEGIN 
            DENSITY = DFTAPEHD;      # SET DENSITY TO HD VALUE         #
            END 
          IF PEFLAG[0]               # IF PE DENSITY SELECTED          #
          THEN
            BEGIN 
            DENSITY = DFTAPEPE;      # SET DENSITY TO PE VALUE         #
            END 
          IF GEFLAG[0]               # IF GE DENSITY SELECTED          #
          THEN
            BEGIN 
            DENSITY = DFTAPEGE;      # SET DENSITY TO GE VALUE         #
            END 
          END 
        END 
    DB$YES; 
  
    END 
  
      CONTROL EJECT;
      PROC DB$SR1F; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR1F - CHECK FOR DUPLICATE TYPE CLAUSE 
* *   R. M. PAPPE                                DATE  06/26/81 
* 
* DC  PURPOSE 
* 
*     CHECK FOR MULTIPLE SPECIFICATIONS OF THE TAPE TYPE CLAUSE 
* 
* DC  ENTRY CONDITIONS
* 
*     DB$SNTX ENCOUNTERED "TAPE TYPE" CLAUSE. 
* 
* DC  EXIT CONDITIONS 
* 
*     IF THE TAPE TYPE CLAUSE WAS ALREADY SPECIFIED FOR THE CURRENT 
*     SCHEMA, RETURN IS TO DB$NO. OTHERWISE, RETURN IS TO DB$YES. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO  - SYNTAX TABLE DRIVER -NO- RETURN. 
*     DB$YES - SYNTAX TABLE DRIVER -YES- RETURN.
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     FLAG TYPEFLAG IS CHECKED TO VERIFY THAT THIS IS THE FIRST 
*     TIME THE TAPE TYPE CLAUSE HAS BEEN SPECIFIED FOR THE
*     CURRENT SCHEMA. IF TYPEFLAG IS TRUE, RETURN IS TO DB$NO.
*     OTHERWISE, RETURN IS TO DB$YES. 
* 
 #
      IF TYPEFLAG[0]         # FIRST OCCURRENCE OF THE CLAUSE          #
      THEN
        BEGIN 
        DB$NO;               # ERROR - CLAUSE ALREADY SPECIFIED        #
  
        END 
      DB$YES; 
  
      END 
      CONTROL EJECT;
      PROC DB$SR1G; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR1G - CHECK FOR DUPLICATE DENSITY CLAUSE
* *   R. M. PAPPE                                DATE  06/26/81 
* 
* DC  PURPOSE 
* 
*     CHECK FOR MULTIPLE SPECIFICATIONS OF THE TAPE DENSITY CLAUSE
* 
* DC  ENTRY CONDITIONS
* 
*     DB$SNTX ENCOUNTERED "TAPE DENSITY" CLAUSE.
* 
* DC  EXIT CONDITIONS 
* 
*     IF THE TAPE DENSITY CLAUSE WAS ALREADY SPECIFIED FOR THE CURRENT
*     SCHEMA, RETURN IS TO DB$NO. OTHERWISE, RETURN IS TO DB$YES. 
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO  - SYNTAX TABLE DRIVER -NO- RETURN. 
*     DB$YES - SYNTAX TABLE DRIVER -YES- RETURN.
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     FLAG DENSFLAG IS CHECKED TO VERIFY THAT THIS IS THE FIRST 
*     TIME THE TAPE DENSITY CLAUSE HAS BEEN SPECIFIED FOR THE 
*     CURRENT SCHEMA. IF DENSFLAG IS TRUE, RETURN IS TO DB$NO.
*     OTHERWISE, RETURN IS TO DB$YES. 
* 
 #
      IF DENSFLAG[0]         # FIRST OCCURRENCE OF THE CLAUSE          #
      THEN
        BEGIN 
        DB$NO;               # ERROR - CLAUSE ALREADY SPECIFIED        #
  
        END 
      DB$YES; 
  
      END 
      CONTROL EJECT;
      PROC DB$SR1J; 
      BEGIN 
 #
* *   DB$SRTF                                    PAGE  1
* *   DB$SR1J - CHECK IF END-OF-RECORD FOUND
* *   R. M. PAPPE                                DATE  11/05/81 
* 
* DC  PURPOSE 
* 
*     CHECK IF END-OF-RECORD/TRANSMISSION DETECTED. 
* 
* DC  ENTRY CONDITIONS
* 
*     EOTFLAG IS SET TO EITHER TRUE OR FALSE. 
* 
* DC  EXIT CONDITIONS 
* 
*     IF THE EOTFLAG IS SET TO TRUE, RETURN IS TO DB$YES. 
*     OTHERWISE, RETURN IS TO DB$NO.
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
*     DB$NO  - SYNTAX TABLE DRIVER -NO- RETURN. 
*     DB$YES - SYNTAX TABLE DRIVER -YES- RETURN.
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     FLAG EOTFLAG IS CHECKED TO FIND IF END-OF-RECORD/TRANSMISSION 
*     HAS BEEN ENCOUNTERED IN THE INPUT STREAM. IF THE FLAG IS TRUE,
*     RETURN IS TO DB$YES. OTHERWISE, RETURN IS TO DB$NO. 
* 
 #
      IF EOTFLAG             # IF EOR ALREADY FOUND                    #
      THEN
        BEGIN 
        DB$YES; 
  
        END 
      DB$NO;
  
      END 
      END                                                                SRTF 
      TERM                                                               SRTF 
