COMCFCE 
COMMON
          CTEXT  COMCFCE - FORMAT CATALOG ENTRY FOR OUTPUT. 
          SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCFCE
          BASE   D
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       FCE - FORMAT CATALOG ENTRY FOR OUTPUT.
*         D. A. HIVELEY.  71/06/10. 
*         W. B. CHAPIN.      79/01/31.
          SPACE  4,50 
***       *FCE* CONVERTS THE FIELDS OF A CATALOG ENTRY TO DISPLAY CODE
*         AND FORMATS IT INTO 4 LINES (70 CHARACTERS EACH) FOR OUTPUT.
*         HEADER LINES ARE DEFINED WHICH THE CALLING PROGRAM CAN
*         RETRIEVE (CHDR1, CHDR2, CHDR3, CHDR4).  THE CALLING PROGRAM 
*         CAN CAUSE THE FOLLOWING FIELDS TO BE BLANKED BY SETTING ALL 
*         BITS IN THE CORRESPONDING FIELDS OF THE *PFC* ENTRY - 
*                USER INDEX 
*                DATE/TIME FIELDS 
*                FILE LENGTH
* 
*         IF THE SYMBOL *FCE$* IS DEFINED THE OUTPUT FORMAT IS CHANGED
*         TO PROVIDE 4 LINES OF UP TO 130 CHARACTERS EACH.  ONLY 90 
*         CHARACTERS PER LINE ARE PROVIDED BY *FCE*.  THE REMAINING 40
*         CHARACTERS CAN BE USED BY THE CALLER TO PROVIDE ADDITIONAL
*         STATUS INFORMATION. *FCE* WILL PROVIDE THE FOLLOWING
*         ADDITIONAL *PFC* INFORMATION IN CHARACTER POSITIONS 80
*         THROUGH 89. 
*                CONTROL MODIFICATION DATE/TIME 
*                UTILITY CONTROL DATE/TIME
*                CARTRIDGE ALTERNATE STORAGE FLAGS
*                CARTRIDGE ALTERNATE STORAGE TYPE 
*                CARTRIDGE ALTERNATE STORAGE ADDRESS
*                TAPE ALTERNATE STORAGE FLAGS 
*                TAPE ALTERNATE STORAGE VSN 
* 
*         ENTRY  (X2) = ALTERNATE USER FLAG.
*                     = 0 IF NOT CATALOG OF ALTERNATE USER. 
*                     = 1 IF ALTERNATE USER CATALOG.
*                (X3) = SYSTEM SECURITY MODE. 
*                     = 0 IF SYSTEM IN UNSECURED MODE.
*                     = 1 IF SYSTEM IN SECURED MODE.
*                (X4) = LENGTH FORMAT.
*                     = 0 IF LENGTH IN CHARACTERS.
*                     = 1 IF LENGTH IN SECTORS. 
*                (X6) = USER INDEX FLAG.
*                     = 0 IF USER INDEX SHOULD NOT BE OUTPUT. 
*                     = 1 IF USER INDEX SHOULD BE OUTPUT. 
*                (X7) = LINE NUMBER (4 DECIMAL DIGITS) TO BE ATTACHED 
*                       TO THE BEGINNING OF THE LINE. 
*                     = 0 IF NO LINE NUMBER SHOULD BE ATTACHED. 
*                (B6) = ADDRESS OF CATALOG ENTRY. 
*                (B7) = WORK AREA FOR STORAGE OF OUTPUT LINES.
*                       (BUFFER SIZE IS DETERMINED BY SYMBOLS - 
*                        *CHDRN* = NUMBER OF LINES, 
*                        *FCELL* = NUMBER OF WORDS PER LINE)
*                (B1) = 1.
* 
*         EXIT   OUTPUT LINES WRITTEN TO WORK AREA. 
*                (NO END-OF-LINES ARE INSERTED -
*                 USE *WRITEH* FOR OUTPUT)
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - ALL. 
* 
*         CALLS  CDD, CDT, COD, EDT, SCB, ZTB.
* 
*         XREF   COMCCDD, COMCCOD, COMCEDT, COMCSCB, COMCZTB, 
*                COMSMLS, COMSPFM.
  
  
 FCE      SUBR               ENTRY/EXIT 
          SA6    UIFL        STORE USER INDEX FLAG
          SA7    LNUM        STORE LINE NUMBER
          BX6    X4 
          LX7    X3 
          SA7    SMFL        STORE SECURITY MODE FLAG 
          NZ     X6,FCE1     IF SECTOR OUTPUT 
          SX6    640D 
 FCE1     SA6    LFAC        SET LENGTH FACTOR
          BX6    X2 
          SA6    AUFL        STORE ALTERNATE USER FLAG
  
*         INITIALIZE THE OUTPUT WORKING BUFFER. 
  
          SB2    FCELL*4-1   NUMBER OF WORDS TO FILL - 1
          SA1    BLAN        BLANK FILL THE BUFFER
          BX6    X1 
 FCE2     SA6    B7+B2       BLANK FILL NEXT CELL 
          SB2    B2-B1
          PL     B2,FCE2     IF NOT BLANK FILLED
  
*         CONVERT MODIFICATION DATE AND TIME. 
  
          SA3    B6+FCMD     MODIFICATION DATE AND TIME 
          RJ     CDT         CONVERT DATE AND TIME
          SB3    MDPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          BX6    X5 
          SB3    MTPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ACCESS DATE AND TIME. 
  
          SA3    B6+FCAD     LAST ACCESS DATE AND TIME
          RJ     CDT         CONVERT DATE AND TIME
          SB3    ADPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          BX6    X5 
          SB3    ATPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT CREATION DATE AND TIME. 
  
          SA3    B6+FCCD     CREATION DATE AND TIME 
          RJ     CDT         CONVERT DATE AND TIME
          SB3    CDPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          BX6    X5 
          SB3    CTPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT CONTROL MODIFICATION DATE AND TIME. 
  
 .A       IF     DEF,FCE$ 
          SA3    B6+FCKD     CONTROL MODIFICATION DATE AND TIME 
          RJ     CDT         CONVERT DATE AND TIME
          SB3    KDPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          BX6    X5 
          SB3    KTPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT UTILITY CONTROL DATE AND TIME.
  
          SA3    B6+FCUD     UTILITY CONTROL DATE AND TIME
          RJ     CDT         CONVERT DATE AND TIME
          SB3    UDPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          BX6    X5 
          SB3    UTPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
 .A       ENDIF 
  
*         GET VALUES FROM CATALOG ENTRY.
  
          SA1    B6+FCDN     DEVICE NUMBER
          MX2    -6 
          LX1    6
          BX0    -X2*X1      SAVE FILE TYPE 
          LX1    6
          BX5    -X2*X1      SAVE PERMISSION MODE 
          LX1    12 
          BX1    -X2*X1      ORDINAL
          SA2    B6+FCBS
          LX2    59-11
          SA3    BLAN 
          BX6    X3 
          SB2    B0 
          PL     X2,FCE4     IF INDIRECT ACCESS FILE
          SA2    STAR 
          BX6    X2 
          SB2    B1 
          ZR     X1,FCE4     IF ON MASTER DEVICE
          RJ     COD         CONVERT TO DISPLAY 
          LX6    59-11
          SB2    B1 
  
*         SET ACCESS MODE.
  
 FCE4     SX7    B2          SET ACCESS MODE
          SA7    ACCM 
          SB3    ORPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT FILE LENGTH.
  
          SA1    B6+FCLF     LENGTH 
          MX2    -24
          LX1    24 
          BX1    -X2*X1 
          BX6    -X2-X1 
          SA2    LFAC        LENGTH FACTOR
          ZR     X6,FCE5     IF BLANK LENGTH REQUEST
          IX1    X1*X2
          RJ     CDD         CONVERT TO DISPLAY 
          SB3    LEPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT FILE TYPE.
  
 FCE5     SA2    X0+FLTP     FILE TYPE
          BX6    X2 
          SB3    FTPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ACCESS MODE.
  
          SA2    ACCM        ACCESS MODE
          SA2    X2+ACMD
          BX6    X2 
          SB3    AMPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         SET FILE NAME.
  
          SA1    B6+FCFN     FILE NAME
          MX2    42 
          BX0    -X2*X1      SAVE USER INDEX
          BX1    X2*X1
          RJ     ZTB         BLANK FILL NAME
          SB3    FNPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         SET LINE NUMBER.
  
 FCE5.1   SA1    LNUM        LINE NUMBER
          ZR     X1,FCE6     IF NO LINE NUMBER
          RJ     CDD         CONVERT TO DISPLAY 
          LX6    59-23
          SB3    NMPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT SUBSYSTEM.
  
 FCE6     SA2    B6+FCFS     FILE SUBSYSTEM 
          MX3    -3 
          AX2    48 
          BX2    -X3*X2 
          SA3    SSTD+X2
          BX6    X3 
          SB3    SSPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT PERMISSION MODE.
  
          SA2    X5+MDTB     PERMISSION MODE
          BX6    X2 
          SB3    FPPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT USER INDEX. 
  
          SA2    UIFL        USER INDEX 
          ZR     X2,FCE7     IF NO USER INDEX 
          MX2    -18         ISOLATE USER INDEX 
          BX1    -X2*X0 
          ZR     X1,FCE7     IF BLANK USER INDEX REQUEST
          RJ     COD         CONVERT TO DISPLAY 
          LX6    24 
          SB3    UIPS 
          RJ     SCB         SET CHARACTES IN BUFFER
  
*         CONVERT ACCESS COUNT. 
  
 FCE7     SA2    B6+FCAC     ACCESS COUNT 
          MX1    24 
          BX1    X1*X2
          LX1    24 
          RJ     CDD         CONVERT TO DISPLAY 
          LX6    18 
          SB3    ACPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         SET PASSWORD. 
  
          SA2    B6+FCPW     PASSWORD 
          MX1    42 
          BX1    X1*X2
          RJ     ZTB         BLANK FILL NAME
          SB3    PWPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT PASSWORD EXPIRATION DATE. 
  
          SA2    B6+FCXD     PASSWORD EXPIRATION DATE 
          MX1    42 
          BX6    X1*X2
          ZR     X6,FCE7.1   IF NO PASSWORD 
          BX2    -X1*X2 
          ZR     X2,FCE7.1   IF NO EXPIRATION DATE
          EDATE  X2 
          SB3    XDPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ACCESS LEVEL. 
  
 FCE7.1   SA1    AUFL 
          NZ     X1,FCE7.3   IF ALTERNATE USER CATALOG
          SA2    B6+FCAL     ACCESS LEVEL 
          MX1    -3 
          LX2    59-35
          BX1    -X1*X2 
          NZ     X1,FCE7.2   IF NONZERO ACCESS LEVEL
          SA2    SMFL 
          ZR     X2,FCE7.3   IF SYSTEM IN UNSECURED MODE
 FCE7.2   SA2    X1+ALTB     CONVERT TO MNEMONIC EQUIVALENT 
          BX6    X2 
          SB3    LVPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT PREFERRED RESIDENCE.
  
 FCE7.3   SA2    B6+FCRS     PREFERRED RESIDENCE
          MX1    3
          BX1    X1*X2
          LX1    3
          SA2    X1+PRTB     CONVERT TO MNEMONIC EQUIVALENT 
          BX6    X2 
          SB3    PRPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT BACKUP REQUIREMENT. 
  
          SA2    B6+FCBR     BACKUP REQUIRED
          MX1    3
          LX2    3
          BX1    X1*X2
          LX1    3
          SA2    X1+BRTB     CONVERT TO MNEMONIC EQUIVALENT 
          BX6    X2 
          SB3    BRPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ALTERNATE CATLIST PERMISSION. 
  
          SA2    B6+FCAP     ALTERNATE CATLIST PERMISSION 
          MX1    -2 
          LX2    0-46 
          BX1    -X1*X2 
          SA2    X1+APTB     CONVERT TO MNEMONIC EQUIVALENT 
          BX6    X2 
          SB3    APPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT FILE RESIDENCE. 
  
          SB3    B0          INITIALIZE RESIDENCE INDICATOR 
          SA3    B6+FCBT     DETERMINE FILE RESIDENCE 
          MX1    -24
          BX3    -X1*X3 
          AX3    12          EXAMINE TRACK ONLY 
          ZR     X3,FCE8     IF NOT DISK RESIDENT 
          SB3    B3+4        SET DISK RESIDENCE INDICATOR 
 FCE8     SA3    B6+FCAA     CHECK FOR CARTRIDGE RESIDENCE
          MX1    -36
          BX3    -X1*X3 
          ZR     X3,FCE9     IF NOT CARTRIDGE RESIDENT
          SA3    B6+FCAF     CHECK THE OBSOLETE FLAG
          LX3    59-48
          NG     X3,FCE9     IF OBSOLETE FLAG SET 
          SB3    B3+B1       SET CARTRIDGE RESIDENCE INDICATOR
 FCE9     SA3    B6+FCTV     CHECK FOR TAPE VSN 
          MX1    -42
          BX3    -X1*X3 
          ZR     X3,FCE9.1   IF NO TAPE VSN 
          SB3    B3+2        SET TAPE RESIDENCE INDICATOR 
 FCE9.1   SA3    B3+RSTB     SET RESIDENCE CODE BASED ON INDICATOR
          BX6    X3 
          SB3    RSPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ERROR FLAGS.
  
          SA1    B6+FCEC     ERROR FLAGS
          AX1    42 
          MX2    -3 
          BX2    -X2*X1 
          SA2    ERTB+X2
          BX6    X2 
          SB3    ERPS 
          RJ     SCB         SET CHARACTER IN BUFFER
  
*         CONVERT CARTRIDGE ALTERNATE STORAGE FLAGS.
  
 .B       IF     DEF,FCE$ 
          SA4    B6+FCAF     CARTRIDGE ALTERNATE STORAGE FLAGS
          MX1    12 
          BX0    X1*X4
          BX6    X6-X6       INITIALIZE LOOP COUNTER
          SA6    COUNT
 FCE10    SX4    X6-12       CHECK FOR END OF LOOP
          ZR     X4,FCE12    IF NO MORE FLAGS TO PROCESS
          SB2    X6          INDEX FOR TABLE ACCESSES 
          SA1    DASH        CODE IF STATUS BIT NOT SET 
          BX6    X1 
          PL     X0,FCE11    IF STATUS BIT NOT SET
          SA1    B2+CFTB     SPECIFY CODE FOR STATUS SET
          BX6    X1 
 FCE11    SB3    B2+CFPS     SPECIFY OUTPUT FORMAT
          RJ     SCB         SET CHARACTERS IN BUFFER 
          SA1    COUNT       INCREMENT COUNT OF STATUS BITS PROCESSED 
          SX6    X1+B1
          SA6    A1 
          LX0    1           POSITION NEXT STATUS FLAG
          EQ     FCE10       PROCESS NEXT STATUS FLAG 
  
*         CONVERT CARTRIDGE ALTERNATE STORAGE TYPE. 
  
 FCE12    SA1    B6+FCAA     CARTRIDGE ALTERNATE STORAGE TYPE 
          AX1    36          ISOLATE *AT* FIELD 
          MX2    -6 
          BX1    -X2*X1 
          SA3    ATTBU       UNKNOWN TYPE CODE
          SX2    X1-ATTBL    CHECK FOR KNOWN *AT* 
          PL     X2,FCE13    IF *AT* UNKNOWN
          SA3    X1+ATTB     GET KNOWN TYPE CODE
 FCE13    BX6    X3          SET *AT* CODE IN LINE BUFFER 
          SB3    CSPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          SA1    B6+FCAT     CARTRIDGE ALTERNATE STORAGE TYPE 
          AX1    36 
          MX2    -6 
          BX1    -X2*X1 
          SX2    X1-ATOD
          NZ     X2,FCE13.1  IF NOT OPTICAL DISK STORAGE
  
*         CONVERT OPTICAL DISK VSN. 
  
          SA1    B6+FCAV     GET OPTICAL DISK VSN 
          RJ     UPV         UNPACK VSN 
          SB3    CVPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT ARCHIVE FILE VERSION NUMBER.
  
          SA5    B6+FCAA     GET FILE VERSION NUMBER
          MX2    -12
          AX5    24 
          BX1    -X2*X5 
          SX1    X1+10000 
          RJ     CDD
          MX2    -24
          SX1    1RF
          BX6    -X2*X6 
          LX1    24 
          BX6    X1+X6
          LX6    30 
          SB3    CBPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          EQ     FCE14       PROCESS NEXT FIELD 
  
*         CONVERT CARTRIDGE ALTERNATE STORAGE ADDRESS.
  
 FCE13.1  SA1    B6+FCAA     CARTRIDGE ALTERNATE STORAGE ADDRESS
          MX2    -36
          BX1    -X2*X1 
          ZR     X1,FCE14    IF *ASA* NOT SPECIFIED 
          AX1    6           ISOLATE 10 CHARACTERS OF *ASA* FIELD 
          RJ     CTD         CONVERT *ASA* FIELD TO OCTAL DISPLAY CODE
          SB3    CAPS        SET 10 DIGITS OF *ASA* IN LINE BUFFER
          RJ     SCB         SET CHARACTERS IN BUFFER 
          SA1    B6+FCAA     ISOLATE 2 CHARACTERS OF *ASA* FIELD
          MX2    -6 
          BX1    -X2*X1 
          RJ     CTD         CONVERT *ASA* FIELD TO OCTAL DISPLAY CODE
          LX6    48          SET 2 DIGITS OF *ASA* IN LINE BUFFER 
          SB3    CAPS+1 
          RJ     SCB         SET CHARACTERS IN BUFFER 
 .B       ENDIF 
  
*         CONVERT CHARGE NUMBER.
  
 FCE14    SA1    B6+FCCN     CHARGE NUMBER
          ZR     X1,FCE15    IF NO CHARGE NUMBER
          RJ     ZTB         BLANK FILL NAME
          SB3    CNPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT PROJECT NUMBER. 
  
 FCE15    SA1    B6+FCP1     PROJECT NUMBER (FIRST 10 CHARACTERS) 
          ZR     X1,FCE16    IF NO PROJECT NUMBER 
          RJ     ZTB         BLANK FILL NAME
          SB3    P1PS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
          SA1    B6+FCP2     PROJECT NUMBER (SECOND 10 CHARACTERS)
          ZR     X1,FCE16    IF PROJECT NUMBER .LE. 10 CHARACTERS 
          RJ     ZTB         BLANK FILL NAME
          SB3    P2PS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
 FCE16    BSS    0
  
*         CONVERT TAPE ALTERNATE STORAGE FLAGS. 
  
 .B2      IF     DEF,FCE$ 
          SA4    B6+FCTF     TAPE ALTERNATE STORAGE FLAGS 
          MX1    12 
          BX0    X1*X4
          SX6    B0+         INITIALIZE LOOP COUNTER
          SA6    COUNT
 FCE17    SX4    X6-12       CHECK FOR END OF LOOP
          ZR     X4,FCE19    IF NO MORE FLAGS TO PROCESS
          SB2    X6          INDEX FOR TABLE ACCESSES 
          SA1    DASH        CODE IF STATUS BIT NOT SET 
          BX6    X1 
          PL     X0,FCE18    IF STATUS BIT NOT SET
          SA1    B2+TFTB     SPECIFY CODE FOR STATUS SET
          BX6    X1 
 FCE18    SB3    B2+TFPS     SPECIFY OUTPUT FORMAT
          RJ     SCB         SET CHARACTERS IN BUFFER 
          SA1    COUNT       INCREMENT COUNT OF STATUS BITS PROCESSED 
          SX6    X1+B1
          SA6    A1 
          LX0    1           POSITION NEXT STATUS FLAG
          EQ     FCE17       PROCESS NEXT STATUS FLAG 
  
*         CONVERT TAPE VSN. 
  
 FCE19    SA1    B6+FCTV     GET TAPE VSN 
          MX3    -42
          BX3    -X3*X1 
          ZR     X3,FCEX     IF NOT TAPE VSN
          RJ     UPV         UNPACK VSN 
          SB3    TVPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
  
*         CONVERT TAPE FILE SEQUENCE NUMBER.
  
          SA5    B6+FCTS     GET TAPE FILE SEQUENCE NUMBER
          MX1    -18
          AX5    24 
          BX1    -X1*X5 
          RJ     CDD
          MX1    -36
          BX6    -X1*X6 
          LX6    24 
          SB3    TSPS 
          RJ     SCB         SET CHARACTERS IN BUFFER 
 .B2      ENDIF 
  
          EQ     FCEX        RETURN 
 CDT      SPACE  4,15 
**        CDT - CONVERT TIMES AND DATES TO DISPLAY FORMAT.
* 
*         ENTRY  (X3) = CODED DATE AND TIME.
* 
*         EXIT   (X6) = DISPLAY CODED DATE. 
*                (X5) = DISPLAY CODED TIME. 
* 
*         USES   X - 0, 1, 5, 6.
* 
*         MACROS EDATE, ETIME.
  
  
 CDT      SUBR               ENTRY/EXIT 
          MX0    -18
          BX1    -X0*X3      CONVERT TIME 
          BX6    -X0-X1 
          BX5    X3 
          ZR     X6,CDT1     IF BLANK TIME REQUEST
          ETIME  X1 
 CDT1     AX5    18 
          BX1    -X0*X5      CONVERT DATE 
          BX5    X6 
          BX6    -X0-X1 
          ZR     X6,CDTX     IF BLANK DATE REQUEST
          EDATE  X1 
          EQ     CDTX        EXIT 
 CTD      SPACE  4,15 
 .K       IF     DEF,FCE$ 
**        CTD - CONVERT THIRTY BIT FIELD TO OCTAL DISPLAY CHARACTERS. 
* 
*         ENTRY  (X1) = RIGHT JUSTIFIED VALUE TO BE CONVERTED.
* 
*         EXIT   (X6) = CONVERTED VALUE.
* 
*         USES   X - 1, 2, 6, 7.
*                B - 2. 
  
  
 CTD      SUBR               ENTRY/EXIT 
          SB2    10          SET CHARACTER LOOP COUNT 
          MX2    -3          MASK FOR OCTAL DIGIT 
          BX6    X6-X6       INITIALIZE DESTINATION 
          LX1    30 
 CTD1     ZR     B2,CTDX     IF CONVERSION COMPLETE 
          SB2    B2-B1
          LX1    3           POSITION DIGIT FOR CONVERSION
          LX6    6
          BX7    -X2*X1      CONVERT NEXT DIGIT 
          SX7    X7+1R0 
          BX6    X6+X7       MOVE CHARACTER TO DESTINATION
          EQ     CTD1        CONVERT ANOTHER DIGIT
 UPV      SPACE  4,16 
**        UPV - UNPACK PACKED VSN.
* 
*         ENTRY  (X1) = PACKED VSN IN LOWER 24 BITS.
* 
*         EXIT   (X6) = VSN, LEFT JUSTIFIED, ZERO FILLED. 
* 
*         USES   X - 0, 1, 3, 6.
* 
*         CALLS  CDD. 
  
  
 UPV      SUBR               ENTRY/EXIT 
          BX0    X1 
          MX3    -12
          BX1    -X3*X0      GET NUMERIC PART OF VSN
          LX0    36 
          SX1    X1+10000 
          RJ     CDD         CONVERT TO DISPLAY CODE
          MX3    -24
          BX6    -X3*X6      TRUNCATE TO 4 DIGITS 
          MX1    12 
          LX6    24 
          BX0    X1*X0       GET VSN PREFIX CHARACTERS
          BX6    X0+X6
          EQ     UPVX        RETURN 
 .K       ENDIF 
 DATA     SPACE  4,10 
*         DATA LOCATIONS. 
  
 ACCM     BSS    1           ACCESS MODE
 AUFL     BSS    1           ALTERNATE USER CATALOG FLAG
 BLAN     CON    10H
 COUNT    CON    0           COUNTER
 LFAC     BSS    1           LENGTH FACTOR
 LNUM     BSS    1           LINE NUMBER
 SMFL     BSS    1           SYSTEM SECURITY MODE FLAG
 UIFL     BSS    1           USER INDEX FLAG
  
*         OUTPUT LINE LENGTH DEFINITIONS. 
  
 .C       IF     DEF,FCE$ 
 FCELL    EQU    13          FOR 130 CHARACTER OUTPUT 
 FCELA    EQU    13          FOR THIRD LINE OF 130 CHARACTER OUTPUT 
 FCELB    EQU    13          FOR FOURTH LINE OF 130 CHARACTER OUTPUT
 .C       ELSE
 FCELL    EQU    7           FOR 70 CHARACTER OUTPUT
 FCELA    EQU    4           THIRD LINE LENGTH
 FCELB    EQU    4           FOURTH LINE LENGTH 
 .C       ENDIF 
 CHDRN    EQU    4           NUMBER OF HEADER LINES 
  
*         HEADER LINES. 
  
 CHDR1    DATA   30H    FILE NAME  FILE TYPE
          DATA   40H LENGTH DN CREATION  ACCESS    DATA MOD 
 .D       IF     DEF,FCE$ 
          DATA   20H CONTROL   UTILITY
          DATA   40H
 .D       ENDIF 
          CON    0
  
 .E       IF     DEF,FCE$ 
 CHDR2    DATA   30H     PASSWORD  COUNT INDEX  PE
          DATA   40HRM. SUBSYS DATE/TIME DATE/TIME DATE/TIME
          DATA   20H DATE/TIME DATE/TIME
          DATA   40H
 .E       ELSE
 CHDR2    DATA   30H     PASSWORD  COUNT        PE
          DATA   40HRM. SUBSYS DATE/TIME DATE/TIME DATE/TIME
 .E       ENDIF 
          CON    0
  
 CHDR3    DATA   40H      EXPIRES   LEVEL   PR BR AC RES ERR
 .F       IF     DEF,FCE$ 
          DATA   10H
          DATA   40H CARTRIDGE FLAGS     TYPE  CARTRIDGE ASA
          DATA   40H
 .F       ENDIF 
          CON    0
  
 CHDR4    DATA   40H       CHARGE NO. PROJECT NUMBER
 .F2      IF     DEF,FCE$ 
          DATA   10H
          DATA   40H   TAPE FLAGS      TAPE VSN  SEQ. NUMBER
          DATA   40H
 .F2      ENDIF 
          CON    0
  
  
*         FIELD EQUIVALENCED CODES. 
  
  
 ACMD     BSS    0           ACCESS MODES 
          LOC    0
          CON    4HIND.      INDIRECT ACCESS FILE 
          CON    4HDIR.      DIRECT ACCESS FILE 
          LOC    *O 
  
 FLTP     BSS    0           FILE TYPES 
          LOC    0
          CON    10HPRIVATE 
          CON    10HSEMI-PR 
          CON    10HPUBLIC
          LOC    *O 
  
 MDTB     BSS    0           PERMISSION MODES 
          LOC    0
          CON    10H WRITE
          CON    10H  READ
          CON    10HAPPEND
          CON    10H  EXEC
          CON    10H  NULL
          CON    10HMODIFY
          CON    10HREADMD
          CON    10HREADAP
          CON    10HUPDATE
          CON    10HREADUP
          LOC    *O 
  
 SSTD     BSS    0           SUBSYSTEM TYPES
          LOC    0
          CON    1H          NULL 
          CON    10HBASIC 
          CON    10HFORT. 
          CON    10HFTNTS 
          CON    10HEXEC. 
          CON    10HBATCH 
          CON    1H          NULL 
          CON    1H          NULL 
          LOC    *O 
  
 ALTB     BSS    0           ACCESS LEVELS
          LOC    0
          CON    10H"ALM0"
          CON    10H"ALM1"
          CON    10H"ALM2"
          CON    10H"ALM3"
          CON    10H"ALM4"
          CON    10H"ALM5"
          CON    10H"ALM6"
          CON    10H"ALM7"
          LOC    *O 
  
 PRTB     BSS    0           PREFERRED RESIDENCE VALUES 
          LOC    0
          CON    1L*         UNDEFINED/INVALID VALUE
          CON    1LL         DISK LOCKED
          CON    1LD         DISK PREFERRED 
          CON    1LM         CARTRIDGE ALTERNATE STORAGE PREFERRED
          CON    1LN         NO PREFERENCE
          CON    1LT         TAPE ALTERNATE STORAGE PREFERRED 
          LOC    *O 
  
 BRTB     BSS    0           BACK-UP REQUIREMENT EQUIVALENCES 
 STAR     EQU    BRTB+0      ( CON  2L * )
          LOC    0
          CON    2L *        UNDEFINED/INVALID VALUE
          CON    2L N        NO BACK-UP 
          CON    2L Y        BACK-UP REQUIRED 
          CON    2LMD        MEDIA DEPENDENT
          LOC    *O 
  
 APTB     BSS    0           ALTERNATE CATLIST PERMISSIONS
          LOC    0
 .ACEX    IFEQ   ACEX,ACNO
          CON    1LN         (DEFAULT FOR EXISTING FILES) 
 .ACEX    ELSE
          CON    1LY         (DEFAULT FOR EXISTING FILES) 
 .ACEX    ENDIF 
          CON    1LN         NO 
          CON    1LY         YES
          CON    1L*         UNUSED 
          LOC    *O 
  
 RSTB     BSS    0           FILE RESIDENCE CODES 
          LOC    0
          CON    3L*         FILE NOT ON DISK, CARTRIDGE OR TAPE
          CON    3LC         FILE ON CARTRIDGE ONLY 
          CON    3LT         FILE ON TAPE ONLY
          CON    3LCT        FILE ON BOTH CARTRIDGE AND TAPE
          CON    3LD         FILE ON DISK ONLY
          CON    3LDC        FILE ON BOTH DISK AND CARTRIDGE
          CON    3LDT        FILE ON BOTH DISK AND TAPE 
          CON    3LDCT       FILE ON DISK, CARTRIDGE AND TAPE 
          LOC    *O 
  
 ERTB     BSS    0           ARCHIVE FILE ERROR STATUSES
          LOC    0
          CON    3L---       NO ERRORS
          DATA   3L-D-       ERROR IN DATA
          DATA   3LP--       PERMITS LOST 
          DATA   3LPD-       PERMITS LOST, ERROR IN DATA
          DATA   3L--T       FILE TRUNCATED 
          DATA   3L-DT       ERROR IN DATA, FILE TRUNCATED
          DATA   3LP-T       PERMITS LOST, FILE TRUNCATED 
          DATA   3LPDT       ALL ERRORS 
          LOC    *O 
  
 .G       IF     DEF,FCE$ 
 CFTB     BSS    0           CARTRIDGE ALTERNATE STORAGE FLAGS
          LOC    0
          CON    1LL         INDIRECT ACCESS FILE DESTAGE IN PROGRESS 
          CON    1L*         UNUSED 
          CON    1L*         UNUSED 
          CON    1L*         UNUSED 
          CON    1L*         UNUSED 
          CON    1LF         FREE CARTRIDGE CONTAINING THIS FILE
          CON    1LT         TEMPORARY ERROR
          CON    1LV         VERIFICATION FLAG
          CON    1LR         PSEUDO RELEASE FLAG
          CON    1LD         PERMANENT DATA ERROR 
          CON    1LS         PERMANENT SYSTEM ERROR 
          CON    1LO         ALTERNATE IMAGE OBSOLETE FLAG
          LOC    *O 
 DASH     CON    1L-         CHARACTER FOR FLAGS NOT SET
  
 ATTB     BSS    0           CARTRIDGE ALTERNATE STORAGE TYPE 
          LOC    0
          CON    4LNONE      NULL ALTERNATE STORAGE FACILITY
          CON    4L MSF      MASS STORAGE FACILITY
          CON    4L MSE      MASS STORAGE ARCHIVE SUBSYSTEM 
          CON    4L OD       OPTICAL DISK STORAGE 
 ATTBL    EQU    *           LIMIT OF KNOWN TYPE CODES
          LOC    *O 
 ATTBU    CON    4LUNK.      UNKNOWN STORAGE CODE 
  
 TFTB     BSS    0           TAPE ALTERNATE STORAGE FLAGS 
          LOC    0
          CON    1LL         INDIRECT ACCESS FILE DESTAGE IN PROGRESS 
          CON    1L*         UNUSED 
          CON    1L*         UNUSED 
          CON    1LA         FILE ON *AT* TAPE
          CON    1LC         FILE ON *CT* OR *AT* TAPE
          CON    1LF         FILE ON *LI*-FORMAT TAPE 
          CON    1LE         DATA ERROR ON SECONDARY VSN
          CON    1LD         DATA ERROR ON PRIMARY VSN
          CON    1LN         SECONDARY VSN NOT AVAILABLE
          CON    1LP         PRIMARY VSN NOT AVAILABLE
          CON    1LS         SECONDARY VSN EXISTS 
          CON    1LV         VERIFICATION FLAG
          LOC    *O 
 .G       ENDIF 
  
*         LINE DEFINITION TABLE.
*         THE CHARACTER FORMAT OF THE OUTPUT BUFFER IS DEFINED HERE.
  
 LINE1    EQU    0           STARTING CHARACTER POSITION
 NMPS     CFORM  LINE1+1,4   NUMBER 
 FNPS     CFORM  LINE1+6,7   FILE NAME
 AMPS     CFORM  LINE1+15,4  ACCESS MODE
 FTPS     CFORM  LINE1+20,7  FILE TYPE
 LEPS     CFORM  LINE1+27,10 FILE LENGTH
 ORPS     CFORM  LINE1+38,2  DEVICE NUMBER
 CDPS     CFORM  LINE1+40,10 CREATION DATE
 ADPS     CFORM  LINE1+50,10 ACCESS DATE
 MDPS     CFORM  LINE1+60,10 MODIFICATION DATE
 .H       IF     DEF,FCE$ 
 KDPS     CFORM  LINE1+70,10 CONTROL MODIFICATION DATE
 UDPS     CFORM  LINE1+80,10 UTILITY DATE 
 .H       ENDIF 
  
 LINE2    EQU    FCELL*10    STARTING CHARACTER POSITION
 PWPS     CFORM  LINE2+6,7   PASSWORD 
 ACPS     CFORM  LINE2+13,7  ACCESS COUNT 
 UIPS     CFORM  LINE2+21,6  USER INDEX 
 FPPS     CFORM  LINE2+28,6  PERMISSION MODES 
 SSPS     CFORM  LINE2+35,5  SUBSYSTEM TYPES
 CTPS     CFORM  LINE2+40,10 CREATION TIME
 ATPS     CFORM  LINE2+50,10 ACCESS TIME
 MTPS     CFORM  LINE2+60,10 MODIFICATION TIME
 .I       IF     DEF,FCE$ 
 KTPS     CFORM  LINE2+70,10 CONTROL MODIFICATION TIME
 UTPS     CFORM  LINE2+80,10 UTILITY TIME 
 .I       ENDIF 
  
 LINE3    EQU    LINE2+FCELL*10  STARTING CHARACTER POSITION
 XDPS     CFORM  LINE3+5,10  PASSWORD EXPIRATION DATE 
 LVPS     CFORM  LINE3+16,7  ACCESS LEVEL 
 PRPS     CFORM  LINE3+24,1  PREFERRED RESIDENCE
 BRPS     CFORM  LINE3+26,2  BACK-UP REQUIRED 
 APPS     CFORM  LINE3+30,1  ALTERNATE CATLIST PERMISSION 
 RSPS     CFORM  LINE3+33,3  RESIDENCE CODE 
 ERPS     CFORM  LINE3+37,3  FILE ERRORS
 .J       IF     DEF,FCE$ 
 CFPS     BSS    0           CARTRIDGE ALTERNATE STORAGE FLAGS
          CFORM  LINE3+51,1  DESTAGE IN PROGRESS
          CFORM  LINE3+52,1  UNUSED 
          CFORM  LINE3+53,1  UNUSED 
          CFORM  LINE3+55,1  UNUSED 
          CFORM  LINE3+56,1  UNUSED 
          CFORM  LINE3+57,1  FREE CARTRIDGE CONTAINING THIS FILE
          CFORM  LINE3+59,1  TEMPORARY ERROR
          CFORM  LINE3+60,1  VERIFICATION FLAG
          CFORM  LINE3+61,1  PSEUDO RELEASE FLAG
          CFORM  LINE3+63,1  PERMANENT DATA ERROR FLAG
          CFORM  LINE3+64,1  PERMANENT STATUS ERROR FLAG
          CFORM  LINE3+65,1  ALTERNATE IMAGE OBSOLETE FLAG
 CSPS     CFORM  LINE3+71,4  CARTRIDGE ALTERNATE STORAGE TYPE 
 CAPS     CFORM  LINE3+78,10 CARTRIDGE ALTERNATE STORAGE ADDRESS
          CFORM  LINE3+88,2  CARTRIDGE ASA CONTINUED
 CVPS     CFORM  LINE3+76,6  OPTICAL DISK VSN 
 CBPS     CFORM  LINE3+83,5  FILE VERSION NUMBER
 .J       ENDIF 
  
 LINE4    EQU    LINE3+FCELL*10  STARTING CHARACTER POSITION
 CNPS     CFORM  LINE4+7,10  CHARGE NUMBER
 P1PS     CFORM  LINE4+18,10 PROJECT NUMBER (FIRST 10 CHARACTERS) 
 P2PS     CFORM  LINE4+28,10 PROJECT NUMBER (SECOND 10 CHARACTERS)
 .L       IF     DEF,FCE$ 
 TFPS     BSS    0           TAPE ALTERNATE STORAGE FLAGS 
          CFORM  LINE4+51,1  INDIRECT ACCESS FILE DESTAGE IN PROGRESS 
          CFORM  LINE4+52,1  UNUSED 
          CFORM  LINE4+53,1  UNUSED 
          CFORM  LINE4+55,1  FILE ON *AT* TAPE
          CFORM  LINE4+56,1  FILE ON *CT* OR *AT* TAPE
          CFORM  LINE4+57,1  FILE ON *LI*-FORMAT TAPE 
          CFORM  LINE4+59,1  DATA ERROR ON SECONDARY VSN
          CFORM  LINE4+60,1  DATA ERROR ON PRIMARY VSN
          CFORM  LINE4+61,1  SECONDARY VSN NOT AVAILABLE
          CFORM  LINE4+63,1  PRIMARY VSN NOT AVAILABLE
          CFORM  LINE4+64,1  SECONDARY VSN EXISTS 
          CFORM  LINE4+65,1  VERIFICATION FLAG
 TVPS     CFORM  LINE4+71,6  TAPE VSN 
 TSPS     CFORM  LINE4+82,6  TAPE FILE SEQUENCE NUMBER
 .L       ENDIF 
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 FCE      EQU    /COMCFCE/FCE 
 QUAL$    ENDIF 
          ENDX
