*COMDECK /CMNTXT/ 
          TITLE     EXTERNAL KEYWORD MICROS 
*#
**    CRM 1.5 IMS   COPYRIGHT CONTROL DATA SYSTEMS INC. 1994
**    CHAPTER 2     MACROS AND SYMBOLS
**    SECTION 1     SYSTEM SYMBOLS
*XD   CHAPTER 2  MACROS AND SYMBOLS 
*X               SYSTEM SYMBOLS 
*0CD  INTRODUCTION
*0        CRM MAINTAINS THREE CLASSES OF SYMBOLS - KEYWORD MICROS,
*         OPTION SYMBOLS, AND INSTALLATION PARAMETERS.
*0        GENERALLY, CRM SYMBOLS ARE OF THE FORM
*0                  #<MNEMONIC>#
*0        WHERE <MNEMONIC> IS USUALLY TWO TO SIX (AND MOST FREQUENTLY 
*         THREE) CHARACTERS LONG. 
*0        ALL USER MACROS AND THE TXTCRM MACROS *F.RM* AND *SET.RM* 
*         REQUIRE ONLY THE <MNEMONIC> PORTION WHEN REFERENCING
*         KEYWORDS. 
*#
*#
*1CD  KEYWORD MICROS
*0D   PURPOSE 
*0        DEFINE EACH FIELD (KEYWORD) IN THE FIT. 
*0        EACH FIT FIELD HAS A MICRO ASSOCIATED WITH IT. THE LOCATION 
*         FIELD SYMBOL OF EACH MICRO IS THE FIT FIELD MNEMONIC. 
*         THE SYMBOL IS SET OFF BY *#*; E.G., THE RL FIELD MICRO IS 
*         #RL#. 
*         THE CHARACTER STRING IS A SET OF PARAMETERS SEPARATED 
*         BY COMMAS, AS FOLLOWS 
* 
*                   T,WW,LL,PP,C,A
* 
*0        THE PARAMETERS ARE
*0        (1)  T    TABLE 
*                   =0, FIT,
*0        (2)  WW   WORD WITHIN TABLE 
*                   NUMBERED FROM 0 IF FIT  (00-17),
*0        (3)  LL   LENGTH OF FIELD IN BITS,
*0        (4)  PP   POSITION OF FIELD IN WORD. POSITION OF LOW ORDER
*                   BIT GIVEN IN CDC [STD] NUMBERING (0-59 RT TO LEFT)
*0        (5)  C    =0, LEGAL STORE/FETCH FIELD,
*                   =1, ILLEGAL STORE FIELD,
*                   =2, ILLEGAL FETCH FIELD,
*                   =3, ILLEGAL STORE/FETCH FIELD,
*0        (6)  A    =0, KEYWORD HAS SYMBOLIC OPTIONS DEFINED IN THE 
*                   OPTION TABLE, 
*                   =1, KEYWORD HAS NO SYMBOLIC OPTIONS.
*                   =2, KEYWORD IS FILE NAME AND IS LEFT JUSTIFIED
*0D   TO AVOID FUTURE PROBLEMS, ALL FIT GENERATORS SHOULD BE DRIVEN 
* D   FROM THE KEYWORD TABLE. THIS PROVIDES INSURANCE AGAINST FUTURE
* D   FIT FIELD CHANGES.
*0D   RESIDENCE 
*         THESE SYMBOLS RESIDE ON THE COMMON DECK *CRMCOM* ON THE 
*         CRM BAM OLDPL.
*#
* CALL /KWMG/               /KWMG/   *COMDECK /KWMG/
*CALL /KWMG/
* 
          TITLE     EQUATED SYMBOLS 
*#
*1CD  INSTALLATION PARAMETERS 
*0D   PURPOSE 
*         PROVIDE SYMBOLS WHICH CAN BE SENSED BY CRM, BOTH DURING THE 
*         ASSEMBLY OF CRM ITSELF AND ASSEMBLY OF USER CODE RESULTING
*         FROM A CRM USER MACRO CALL. 
*0D   RESIDENCE 
*0        TXTCRM AND SYSTEXT
*0D   SYMBOLS 
*0        #70C#     CONTROLS CODE PRODUCED BY INVOKING A USER MACRO.
*                   IF 0, CODE IS GENERATED AS DESCRIBED IN SECTION 
*                   2, *CODE GENERATION*. NO ALTERNATIVE IS AVAILABLE.
* 
*0        #DBG#     DEBUG CODE ASSEMBLY FLAG. IF DEFINED, CRM ASSEMBLES 
*                   CODE TO CATCH INTERNAL ERRORS. AN INTERNAL ERROR
*                   CAUGHT BY #DBG# SHOWS UP AS A MODE 1, WITH THE
*                   FOLLOWING SYMPTOMS
*0                  (1) AN EQ JUMP, 
*0                            EQ   *+500000B
*0                      USUALLY MEANS AN ATTEMPT TO STORE (VIA SET.RM)
*                       A NEGATIVE FIELD IN THE FIT.
*0        #FTL#     LENGTH OF FIT (WORDS).
*0        #FTS#     LENGTH OF INTERNAL SCRATCH AREA APPENDED TO EACH
*                   FIT (WORDS).
*0        #LBLIM#   THE MAXIMUM NUMBER OF 80 CHARACTER LABELS THAT
*                   CAN BE PROCESSED AT ONE TIME. 
*0        #CMU#     IF DEFINED, THE CRM CHARACTER MOVE ROUTINE (MOVE$RM)
*                   IS ASSEMBLED TO USE THE COMPARE-MOVE UNIT (CMU).
*         #NOCMU#   IF DEFINED, THE CRM CHARACTER MOVE ROUTINE (MOVE$RM)
*                   IS ASSEMBLED TO USE A CP CODE MOVE (NO CMU) 
*                   IF BOTH #CMU# AND #NOCMU# ARE DEFINED CRM WILL DECIDE 
*                   AT EXECUTION TIME WHICH MOVE TO USE. BOTH DEFINED IS
*                   DEFAULT.
*0        IMS       IF DEFINED, THE TEXT (IOTEXT,TXTCRM) PORTION OF 
*                   THE IMS (TABLE OF CONTENTS, GENERAL DESIGN, 
*                   KEYWORD MICROS, MACRO DOCUMENTATION, ETC.) IS 
*                   WRITTEN TO THE COMPILE FILE BY UPDATE. THIS IS
*                   CONTROLLED BY THE UPDATE DIRECTIVES  *IF DEF,IMS
*                   AND  *ENDIF  AROUND THE DOCUMENTAION COMMENTS,
*                   AND BY  *DEFINE IMS  IN THE UPDATE RUN USED TO
*                   PRODUCE THE COMPILE FILE READ BY JOVEC TO GENERATE
*                   THE IMS.
*0D              INSTALLATION 
*0        EACH OF THE INSTALLATION PARAMETERS HAS A MNEMONIC UPDATE 
*         IDENTIFIER, SO THAT, TO REPLACE IT WITH ONE OF YOUR OWN 
*         CHOICE ...
*0                  *IDENT <YOUR-CHOICE>
*                   *DELETE <INST-MNEM>.1 
*                   #<INST-MNEM>#  EQU
*0        WHERE 
*0                  <INST-MNEM> = DBG/FTL/FTS/LBLIM 
* 
*#
* 
*     WHETHER OR NO TO ASSEMBLE AND ISSUE 
*     ERROR MESSAGES (1=YES,0=NO) 
* 
 #EMSG#   EQU       1 
* 
*     DEBUG FLAG - ASSEMBLE DEBUG CODE IF DEFINED 
* 
* 
*         FIT LENGTH
* 
 #FTL#    EQU       33D            FIT LENGTH 
* 
*                  SCRATCH APPENDAGE TO FIT LENGTH
* 
 #FTS#    EQU       2D             FIT SCRATCH
* 
*        CHANGE #MNF# VALUE TO (#FTL#+#FTS#-5) WHEN 667 DRIVER FIXED. 
* 
#MNF#     EQU       #FTL#+#FTS#-5 
* 
*    USER LABEL PROCESSING BUFFER. MAXIMUM NUMBER OF HDR LABELS.
* 
 #LBLIM#  EQU       10
*#
*1CD  AAM INTERFACE OPERATION CODES 
*0        #OPN#     OPEN (1)
*         #CLSE#    CLOSE (2) 
*         #GET#     GET (3) 
*         #GTN#     GETN (4)
*         #PUT#     PUT (5) 
*         #SIK#     SEEK (6)
*         #SKP#     SKIP (7)
*         #DLT#     DELETE (8)
*         #RPL#     REPLACE (9) 
*         #REW#     REW (10)
*         #BFLS#    ALLOCATED BUFFER SPACE (11) 
*         #SKF#     SKIP FORWARD (12) 
*         #SKB#     SKIP BACKWARD (13)
*         #WER#     WEOR (14) 
*         #WTM#     WTMK (15) 
*         #END#     ENDFILE (16)
*         #GTL#     GETL (17) 
*         #PTL#     PUTL (18) 
*         #CLL#     CLOSEL (19) 
*         #LAB#     LABEL (20)
*         #GWR#     GETWR (21)
*         #PWR#     PUTWR (22)
*0        THE ABOVE, #OPN# ... #REW#, ARE CRM/AAM INTERFACE OPERATION 
*         CODES. WHEN CRM DETERMINES THAT A FILE IS A AAM FILE (FO= 
*         IS/DA/AK), IT TURNS CONTROL OVER TO AAM BY SETTING THE
*         APPROPRIATE OPERATION CODE IN COP AND ... 
* 
*0                  RJ        =XAAM$CTL 
*#
 #OPN#    EQU       1              OPENM
 #CLS#    EQU       2              CLOSEM 
 #GET#    EQU       3              GET
 #GTN#    EQU       4              GET NEXT 
 #PUT#    EQU       5              PUT
 #SIK#    EQU       6              SEEK 
 #GNR#    EQU       7              GET NEXT NO RECALL 
 #DLT#    EQU       8D             DELETE 
 #RPL#    EQU       9D             REPLACE
 #REW#    EQU       10D            REWIND 
 #STF#    EQU       11D            SETFIT 
 #SKF#    EQU       12D            SKIP FORWARD 
 #SKB#    EQU       13D            SKIP BACKWARD
 #STR#    EQU       14D            START
          EJECT 
*#
*1CD  OPTION SYMBOLS
*0D   PURPOSE 
*0        PROVIDE A TABLE OF SYMBOLS CORRESPONDING TO VARIOUS FIT 
*         FIELD OPTIONS.
*0        THIS TABLE ESTABLISHES THE VALUES IN FIT FIELDS 
*         CORRESPONDING TO MNEMONIC SYMBOLS USED TO REPRESENT 
*         OPTIONS (SEE THE FILE MACRO). IT CONSISTS OF A LIST 
*         OF EQU-S, EACH REPRESENTING AN OPTION. THE SYMBOL 
*         REPRESENTING THE OPTION IS THE LOCATION FIELD STRIPPED
*         OF THE # SIGNS. WHEN OPTION SYMBOL VALUES CONFLICT
*         WITH ONE ANOTHER (E.G.,RT=T, EO=T) AN ARBITRARY 
*         CHARACTER (OR CHARACTERS) IS CONCATENATED IN ORDER
*         TO PROVIDE UNIQUENESS.
*0        THE OPTIONS ARE LISTED BELOW (THEY WILL NOT APPEAR IN THE 
*         JOVEC OUTPUT SINCE THE DEFINITIONS ARE NOT COMPATIBLE 
*         JOVEC FORMAT).
*#
* 
*     GENERAL DEFAULT (FOR A NULL PARAMETER)
* 
 ##       EQU       0              DEFAULT
* 
*     RECORD TYPE OPTIONS (RT=<OPTION>). T CONCATENATED.
* 
 #WT#     EQU       0              CONTROL WORD TYPE RECORD 
 #FT#     EQU       1              FIXED LENGTH RECORD TYPE 
 #RT#     EQU       2              RECORD MARK RECORD TYPE
 #ZT#     EQU       3              ZERO BYTE RECORD TYPE
 #DT#     EQU       4              DECIMAL CHARACTER COUNT RECORD TYPE
 #TT#     EQU       5              TRAILER COUNT RECORD TYPE
 #BT#     EQU       6 
 #UT#     EQU       7              UNDEFINED TYPE RECORD
 #ST#     EQU       8D              SCOPE LOGICAL RECORD TYPE 
* 
*     LABEL CREATION (LCR=<OPTION). LCR CONCAT. 
* 
*         INTERNAL SYMBOL VALUES: 
*                   #NLCR#/0, #ELCR#/1
*         FILE CARD AND FILE MACRO SYMBOL VALUES: 
*                   #CRT#/0, #CHK#/1
 #NLCR#   EQU       0              NEW (CREATE) LABELS
 #ELCR#   EQU       1              EXISTING (CHECK) LABELS
#CRT#     EQU       0 
#CHK#     EQU       1 
* 
*     KEY TYPE OPTIONS (KT=<OPTION>)
* 
 #SKT#    EQU       1 
 #IKT#    EQU       2 
 #FKT#    EQU       2 
 #UKT#    EQU       3 
 #AKT#    EQU       5 
* 
*     YES/NO OPTIONS(<KEYWORD>=YES/NO/<>) 
* 
 #NO#     EQU       0              NO OPTION /NO USER LABEL PROCESSING
 #YES#    EQU       1              YES OPTION 
* 
*     PROCESSING DIRECTION (PD=<OPTION) 
* 
 #INPUT#  EQU       1              INPUT ONLY 
 #OUTPUT# EQU       2              OUTPUT ONLY
 #IO#     EQU       3              INPUT/OUTPUT 
* 
*     LABEL TYPE OPTIONS (LT=<OPTION>). BY COINCIDENCE, WE ALREADY
*     HAVE AN ST IN #ST# ABOVE
* 
 #S#      EQU       0              STD LBL
 #NS#     EQU       1              NON STANDARD LABEL 
 #UL#     EQU       2              UNLABELLED 
 #ANY#    EQU       3 
* 
*     OPEN/CLOSE FLAGS (OC=<OPTION>)
* #NOP#   EQU       0              NEVER OPENED 
 #OPE#    EQU       1              OPEN 
 #CLO#    EQU       2              CLOSED 
* 
* 
*     OPEN FLAG (OF=<OPTION>).
 #R#      EQU       1              RANDOM/REWIND
 #N#      EQU       2              NO REWIND
 #E#      EQU       3              EXTEND 
* 
*     BLOCK TYPE OPTIONS (BT=<OPTION>). T CONCATENATED. 
* 
 #IT#     EQU       1 
 #CT#     EQU       2 
 #KT#     EQU       3 
 #ET#     EQU       4 
* 
*     CLOSE FLAG (CF=<OPTION>). R (REWIND) AND N (NO REWIND ALREADY 
*     PROVIDED. 
 #U#      EQU       3              UNLOAD/
 #RET#    EQU       4              RETURN 
 #DET#    EQU       5              DETACH 
 #DIS#    EQU       6              IDSCONNECT 
* 
*     USER LABEL PROCESSING (ULP=<OPTION>)
* 
 #P#      EQU       0              ULP DEFAULT
 #NOP#    EQU       0              NO LABEL PROC
 #VP#     EQU       1              VOLUME LABEL PROC. 
 #FP#     EQU       2              FILE LABEL PROC. 
 #VFP#    EQU       3              VOLUME+FILE LABEL PROC.
 #UP#     EQU       4              UHL/UTL LABEL PROC.
 #VUP#    EQU       5              VOL/UHL/UTL LABEL PROC.
 #FUP#    EQU       6              HDR/EOV/EOF/UHL/UTL LABEL PROC.
 #VFUP#   EQU       7              ALL LABEL PROC.
* 
*         FILE ORGANIZATION OPTIONS (FO=<OPTION>).
* 
 #SQ#     EQU       0              SEQUENTIAL FILE ORG
 #WA#     EQU       1              WORD ADDRESSABLE FILE ORG
 #DR#     EQU       2              DIRECT (7DM) 
 #IS#     EQU       3              INDEX SEQ FILE ORG 
 #LB#     EQU       4              LB (7DM) 
 #DA#     EQU       5              DIRECT ACCESS
 #AK#     EQU       6              SAK
* 
*         READ PARITY ERROR PROCESSING (EO=<OPTION>). 
* 
 #T#      EQU       0              TERMINATE ERROR OPT
 #D#      EQU       1              DROP ERROR OPT 
 #A#      EQU       2              ACCEPT ERROR OPT 
 #TD#     EQU       4              DISPLAY AND TERMINATE ERROR OPT
 #DD#     EQU       5              DISPLAY AND DROP ERROR OPT 
 #AD#     EQU       6              DISPLAY AND ACCEPT ERROR OPT 
* 
*     FILE POSITION (FP). 
* 
 #EOL#    EQU       1B             END OF LABELS
 #BOI#    EQU       1B             BEGINNING OF INFORMATION 
 #BOF#    EQU       2B             BEGINNING OF FILE
 #BOV#    EQU       2B             BEGINNING OF VOLUME
 #EOV#    EQU       4B             END OF VOLUME
 #EOS#    EQU       10B            END OF SECTION (7-8-9 OR W-FLAG) 
 #EOK#    EQU       10B            END OF KEY 
 #EOR#    EQU       20B            END OF RECORD
 #EOF#    EQU       40B            END OF FILE
 #EOP#    EQU       40B            END OF PARTITION 
 #EOI#    EQU       100B           END OF INFORMATION 
* 
*         INTERNAL CODE (IC). 
* 
 #AS6#    EQU       2              6/12 ASCII 
 #AS8#    EQU       3              8/12 ASCII 
 #ASCII#  EQU       4              8/8 ASCII
 #D63#    EQU       1              63 CHARACTER DISPLAY CODE
 #D64#    EQU       0              64 CHARACTER DISPLAY CODE
 #EBCDIC# EQU       5              EXTENDED BINARY CODED DECIMAL
 #BCD#    EQU       6              BINARY CODED DECIMAL 
* 
 FIF      IFEQ      IP.CSET,IP.C63
 #CSET#   EQU       #D63# 
 FIF      ELSE
 #CSET#   EQU       #D64# 
 FIF      ENDIF 
* 
* 
 #FETL#   EQU       10D            FET LENGTH 
* 
 PL.TBL   IF        DEF,#DEV# 
 #PGPLSZ# EQU       14B            GET$SQ/PUT$SQ PASSLOC TABLE SIZE 
 PL.TBL   ELSE
 #PGPLSZ# EQU       12B            GET$SQ/PUT$SQ PASSLOC TABLE SIZE 
 PL.TBL   ENDIF 
* 
 #AM2DSZ#   EQU     26B            AAM EXTENDED DIRECTORY SIZE
*     OLD/NEW PARAMETERS - ON FILED OPTIONS 
* 
 #OLD#    EQU       0 
 #NEW#    EQU       1 
* 
*         MIP RELATIONAL OPERATORS (REL = <OPTION>) 
* 
 #EQ#     EQU       1              EQUAL
 #LE#     EQU       2              LESS THAN OR EQUAL 
 #GE#     EQU       3              GREATER THAN OR EQUAL
 #NE#     EQU       4              NOT EQUAL
 #LT#     EQU       5              LESS THAN
 #GT#     EQU       6              GREATER THAN 
* 
*         PROCESSING MODE OPTION FOR IS/DA FILES (PM) 
* 
 #RPM#    EQU       0              RANDOM PROC. 
 #SPM#    EQU       1              SEQ. PROC.MODE.
 #PM#     EQU       0              DEFAULT IS RANDOM
* 
*         RECORDING MODE (PARITY) FOR 7 TRACK TAPES.
* 
 #EVN#    EQU       0              EVEN PARITY
 #ODD#    EQU       1              ODD PARITY  (BINARY) 
* 
*         LAST OPERATION CODES. THOSE CODES WHICH SET THE WRITE BIT 
*         HAVE IT INCLUDED IN THE LOP CODE. 
* 
 #OP#     EQU       1              OPENM
 #CM#     EQU       2              CLOSEM 
 #GE#     EQU       3              GET/GETP 
 #PU#     EQU       43B            PUT/PUTP 
 #SE#     EQU       4              SEEK 
 #SF#     EQU       5              SKIPF
 #BA#     EQU    6                 SETFIT 
 #SB#     EQU       12B            SKIPB
 #DE#     EQU       46B            DELETE 
 #RP#     EQU       56B            REPLACE
 #WE#     EQU       47B            WEOR 
 #RE#     EQU       10B            REWINDM
 #GL#     EQU       11B            GETL 
 #PL#     EQU       11B            PUTL 
 #CL#     EQU       13B            CLOSEL 
 #LL#     EQU       14B            LABEL (7RM ONLY) 
 #WK#     EQU       63B            WTMK 
 #EN#     EQU       74B            ENDFILE
* 
*         OVERFLOW OPTION FLAGS - SIS/SDA 
* 
 #OVO#    EQU    1
 #OVB#    EQU    2                 DEFAULT VALUE
 #OVH#    EQU    3
*     SURROUNDING THE CALL
          XTEXT     ACTCOM
RA.SYMB   SPACE  4,12 
**        RA.SYMBOLS - DEFINITION OF SYSTEM COMMUNICATION SYMBOLS.
* 
*         THE SYSTEM COMMUNICATION SYMBOLS ARE DEFINED BELOW. THEY ARE
*         VALIDATED BY XTEXT-ING COMSRAS. IF THEY ARE CHANGED IN EITHER 
*         THIS TEXT OR COMSRAS, AN ASSEMBLY ERROR WILL OCCUR. 
  
  
 RA.SSW   EQU    0           SENSE SWITCHES 
 RA.MTR   EQU    1           SYSTEM MONITOR REQUEST 
 RA.ARG   EQU    2           FIRST CONTROL CARD ARGUMENT
 RA.LAPR  EQU    53B         LAST USABLE PARAMETER WORD 
 RA.PGN   EQU    64B         PROGRAM NAME (BITS 59 - 18)
 RA.ACT   EQU    64B         ARGUMENT COUNT (BITS 17 - 0) 
 RA.CMU   EQU    65B
 RA.LWP   EQU    65B         LWA+1 ASSIGNED PROGRAM SPACE (BITS 17 - 0) 
 RA.CMU   EQU    65B         COMPARE MOVE UNIT FLAG (BIT 59)
 RA.FWP   EQU    66B         FWA ASSIGNED PROGRAM SPACE (BITS 17 - 0) 
 RA.CEJ   EQU    66B         CENTRAL EXCHANGE JUMP FLAG (BIT 59)
 RA.LDR   EQU    67B         *LDR* COMPLETION (BIT 29)
 RA.CCD   EQU    70B         CONTROL CARD (8 LOCATIONS) 
 RA.ORG   EQU    100B        PROGRAM ORIGIN 
          XTEXT     COMSRAS 
* 
*         REDEFINE THE TITLE PSEUDO-OP FOR MACRO CROSS REFERENCE MAP. 
* 
 TYTLE    OPSYN     TITLE 
          PURGMAC   TITLE 
          MACRO     TITLE,N,P 
 N        TYTLE     "'?CLS.RM" P
 #.P#     MICRO     1,,-P-
 #.P#     MICRO     1,,*"#.P#"* 
          IFC       NE, "#.P#"  ,3
          QUAL      MACROS
 "#.P#"   SET 
          QUAL      * 
 TITLE    ENDM
 CLASS    SPACE     4,8 
          MACRO     CLASS,N,P 
 '?CLS.RM MICRO     1,,^(P)^
 N        TITLE     --------
 CLASS    ENDM
          CLASS     ()
