COMFFSE 
COMMON
  
# COMFFSE - GENERAL SYMBOL/MACRO DEFINITIONS FOR FULL SCREEN EDITOR # 
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
                                                                      # 
*     COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
                                                                      # 
  
  
# ABSOLUTE CONSTANTS #
DEF BASIC #1#;    DEF FORTRAN #2#;    DEF FTNTS #3#;
  
# ASSEMBLY CONSTANTS #
DEF TLXFUNC #O"12"#;
DEF TXOT #O"03"#;                    # INTERACTIVE JOB ORIGIN TYPE #
DEF TTEQ #O"04"#;                    # TIMESHARING PSEUDO-EQUIPMENT # 
DEF LWPR #O"65"#;                    # LWA+1 ASSIGNED PROGRAM SPACE # 
DEF CSMR #O"67"#;                    # SYSTEM CHARACTER SET MODE #
DEF CCDR #O"70"#;                    # CONTROL CARD BUFFER #
DEF IAFSSID  #O"7776"#; 
DEF SMFSSID  #O"7755"#; 
  
  
# UNIVERSAL DEFINITIONS # 
  
CONTROL SLOWLOOP; 
CONTROL PACK; 
  
DEF PAGE #CONTROL EJECT;#;
DEF WHYLE #FOR DUMB = DUMB WHILE#;     ITEM DUMB; 
  
CONTROL IFEQ MULTI,1; 
  DEF IOBEGIN(R) # BEGIN RSTK[RSTKPTR]=LOC(R); RSTKPTR=RSTKPTR+1;#; 
                 # IF RSTKPTR GQ MAXREENT THEN FATAL("RSTACK$")  #
  DEF IOEND #RSTKPTR = RSTKPTR - 1; END#; 
  DEF IORET #BEGIN RSTKPTR = RSTKPTR - 1; RETURN; END#; 
CONTROL FI; 
CONTROL IFEQ SINGLE,1;
  DEF IOBEGIN(R) #BEGIN#;   DEF IOEND #END#;  DEF IORET #RETURN;#;
CONTROL FI; 
  
DEF VERSION #"1.0.0$"#; 
  
  
  
# "HELP" FACILITY DEFINITIONS # 
  
DEF HELPUSERNUM #"LIBRARY"#;
  
  
  
# DEFINITIONS REQUIRED FOR MULTI-USER COMPILATION OF EDITOR CODE #
  
DEF METERING #1#; 
DEF PARANOIA #9#; 
DEF NUMSTATS #48#;
STATUS TTOST
  NORMAL, 
  FORCE,
  PROMPT; 
  
  
  
# DEFINITIONS USED ONLY IN PHASE "A" FSE/SMF/IAF INTERFACE #
  
STATUS LOGST
  REJECT, 
  ACCEPT, 
  READY;
DEF SICBASE #O"40"#;  DEF ORDBASE #O"41"#;  DEF USRBASE #O"42"#;
DEF SLTBASE #O"43"#;  DEF STTBASE #O"44"#;
  
  
  
  
# WORKFILE ACCESS METHOD CONFIGURATION DEFINITIONS #
  
DEF IOVERSION  #8#;          # WORKFILE LEVEL                        #
DEF MAXDEPTH   #4#;          #                                       #
DEF MAXCACHE #9#;            # MUST EXCEED MAXDEPTH BY AT LEAST 2    #
DEF BUFSIZE    #O"1200"#;    # MUST EQUAL 64*(MAXCACHE+1)            #
DEF DISKSIZE   #O"1401"#;    #                                       #
DEF INIDSKSIZ #O"2401"#;     # MUST MATCH "SIZE" IN BUFFERS MODULE   #
DEF FETSIZ     #7#;          #                                       #
DEF OBFSIZE    #O"77"#;      #                                       #
DEF RDLIM      #64#;         #                                       #
DEF LSTSIZE    #65#;         # MUST EQUAL RDLIM+1                    #
  
  
  
# MISCELLANEOUS DEFS                                                 #
  
DEF AUDITSIZE  #159#;        # STAGING AREA FOR AUDITTRAIL, SIZE - 1 #
DEF BACKMAX    #7#;          # SIZE OF BACKSTACK - 1                 #
DEF BUFCHAR    #250#;        # CHARACTERS PER LINE                   #
DEF BUFCM1     #249#;        # MUST EQUAL BUFCHAR - 1                #
DEF BUFWID     #31#;         # AT LEAST BUFCHAR / 8                  #
DEF BUFWIDP1   #32#;         # MUST EQUAL BUFWID + 1                 #
DEF BUFWID2    #50#;         # AT LEAST BUFCHAR / 5                  #
DEF BUFWID2P1  #51#;         # MUST EQUAL BUFWID2 + 1                #
DEF FLOATNONUM #TRUE#;       #                                       #
DEF HELPSIZE   #15#;         # NUMBER OF HELP LINES FOR LINE MODE    #
DEF MAXCONNECT #4095#;       # MAXIMUM IAF CONNECTION ORDINAL (MULTI)#
DEF MAXCMDS    #18#;         #                                       #
DEF MAXDATA    #8#;          # GENERAL PURPOSE DATA STACK            #
DEF MAXLMULTI  #32768#;      # MAX FILESIZE TO CONNECT TO MULTI      #
DEF MAXREENT   #48#;         # MAX REENTRANCY LEVELS                 #
DEF MINIBUFSIZ #O"101"#;     #                                       #
DEF MAXROWS    #63#;         # MAXIMUM NUMBER OF ROWS - 1            #
DEF NEGFKEYS   #-24#;        # NUMBER OF SHIFTED APPLICATION KEYS    #
DEF NINES      #99999#;      # MAX SEQUENCE NUMBERS                  #
DEF NUMFKEYS   #49#;         # NUMBER OF FUNCTION KEYS (PLUS NEXT)   #
DEF NUMKWDS    #102#;        # NUMBER OF KEYWORDS - 1                #
DEF NUMWIDTH   #5#;          # MAXIMUM NUMBER OF DIGITS (SEQ. NUM.)  #
DEF POSFKEYS   #24#;         # NUMBER OF UNSHIFTED APPLICATION KEYS  #
DEF SPLTCTLSIZ #5#;          # SPLIT CONTROL SIZE                    #
DEF STRWID     #11#;         #                                       #
DEF STRWIDM1   #10#;         # 80 CHARACTERS (INTERNAL CHARSET)      #
DEF TABSTOPS   #21#;         # ACTUAL NUMBER OF TAB STOPS            #
DEF TABWORDS   #3#;          # MUST EQUAL (TABSTOPS + 6) / 7         #
DEF TTLLNLEN   #20#;         # 160 CHARACTERS (INTERNAL CHARSET)     #
DEF TTYIBUFSIZ #O"1001"#;    # SIZE OF TTY INPUT BUFFER              #
DEF TTYOBUFSIZ #O"1001"#;    # SIZE OF TTY OUTPUT BUFFER             #
DEF USERTABS   #20#;         # USABLE TAB STOPS, EQUAL TABSTOPS - 1  #
DEF VOLLINES   #64#;         # NUMBER OF LINES DONE BEFORE PREEMPT   #
DEF BACKIND #0#;             # BACKSTORE INDEX FOR BACK # 
DEF TEMPIND #1#;             # BACKSTORE INDEX FOR TEMP # 
  
  
  
  
#  VECTOR OF RELOCATABLE STACKS, REGISTERS, AND POINTERS   #
  
# VECTOR CONSISTS OF A GENERAL PURPOSE STACK AREA, THEN TOP  #
# AND BOTTOM BOUNDS FOR RANGES, CURRENT POSITIONS FOR THE    #
# TWO BRACKETED FILES, TOP BOUNDS FOR THE TWO FILES, BOTTOM  #
# BOUNDS FOR THE TWO FILES, PAGE TOP BOUNDS FOR THE TWO      #
# FILES, PAGE BOTTOMS, FILE DESCRIPTOR LINE POINTERS FOR THE #
# TWO CURRENT FILES, TOP AND BOTTOM BOUNDS FOR THE LIST OF   #
# FILE DESCRIPTOR LINES, THE XYZ REGISTERS, THE MARKERS,     #
# THEN THE TOP, BOTTOM, AND CURRENT POINTERS FOR PROCEDURES, #
# AND FINALLY THE TOP, BOTTOM, AND CURRENT POINTERS FOR THE  #
# "UNDO" AUDIT TRAIL.                                        #
  
DEF MAXREG #42#;             # NUMBER OF REGISTERS - 1     #
DEF MAXSTACK #5#;            # CURRENT STACK IS 0 TO MAXSTACK        #
DEF RNGTOPREG #6#;           DEF RNGBOTREG #7#; 
DEF FILE1CURREG #8#;         DEF FILE2CURREG #9#; 
DEF FILE1TOPREG #10#;        DEF FILE2TOPREG #11#;
DEF FILE1BOTREG #12#;        DEF FILE2BOTREG #13#;
DEF PAGE1TOPREG #14#;        DEF PAGE2TOPREG #15#;
DEF PAGE1BOTREG #16#;        DEF PAGE2BOTREG #17#;
DEF FILE1FDLREG #18#;        DEF FILE2FDLREG #19#;
DEF LISTTOPREG #20#;         DEF LISTBOTREG #21#; 
DEF XYZREG #22#; # THRU 24 # DEF MARKREG #25#;  # AND 26 #
DEF CURPROCREG #27#;         DEF CURAUDITREG #28#;
DEF TOPPROCREG #29#;         DEF TOPAUDITREG #30#;
DEF BOTPROCREG #31#;         DEF BOTAUDITREG #32#;
DEF XYZTOP #33#; # THRU 35 # DEF MARKTOP #36#;  # AND 37 #
DEF LASTPAGEREG #38#; # AND 39 #
DEF FKEYTOPREG #40#;         DEF FKEYBOTREG #41#; 
DEF BCKCURLIN #42#;          # REGSTACK BACK LINE INDEX # 
  
DEF FILECURM1 #7#;           # MUST EQUAL FILE1CURREG-1    #
DEF FILETOPM1 #9#;           # MUST EQUAL FILE1TOPREG-1    #
DEF FILEBOTM1 #11#;          # MUST EQUAL FILE1BOTREG-1    #
DEF PAGETOPM1 #13#;          # MUST EQUAL PAGE1TOPREG-1    #
DEF PAGEBOTM1 #15#;          # MUST EQUAL PAGE1BOTREG-1    #
DEF FILEFDLM1 #17#;          # MUST EQUAL FILE1FDLREG-1    #
DEF LASTTOPM1 #37#;          # MUST EQUAL LASTPAGEREG-1    #
PAGE                         # DEFS OF INTERNAL CHARACTER SET        #
  
#  CHARACTER SET REQUIRES UPPER LETTERS, LOWER LETTERS, AND          #
#  DIGITS BE IN CONSECUTIVE SEGMENTS.                                #
  
DEF GETCHAR(AA,BB,CC) # CC=B<4+7*((BB) LAN 7),7>AA[(BB)/8] #; 
DEF SETCHAR(AA,BB,CC) # B<4+7*((BB) LAN 7),7>AA[(BB)/8]=CC #; 
  
#  NOTE THAT THE WORD/CHARACTER GEOMETRY EXPRESSED ABOVE IS  #
#  HARD-CODED IN SEVERAL COMPASS ROUTINES, PLUS THE "PAD"    #
#  SYMPL ROUTINE IN FSESUBS.  # 
  
DEF CLETTERA   #O"001"#;     DEF CLETTERZ   #O"032"#; 
DEF CLOWERA    #O"101"#;     DEF CLOWERZ    #O"132"#; 
DEF CDIGIT0    #O"033"#;     DEF CDIGIT9    #O"044"#; 
  
DEF CLETTERB #O"002"#;  DEF CLETTERC #O"003"#;  DEF CLETTERD #O"004"#;
DEF CLETTERE #O"005"#;  DEF CLETTERF #O"006"#;  DEF CLETTERG #O"007"#;
DEF CLETTERH #O"010"#;  DEF CLETTERI #O"011"#;  DEF CLETTERJ #O"012"#;
DEF CLETTERK #O"013"#;  DEF CLETTERL #O"014"#;  DEF CLETTERM #O"015"#;
DEF CLETTERN #O"016"#;  DEF CLETTERO #O"017"#;  DEF CLETTERP #O"020"#;
DEF CLETTERQ #O"021"#;  DEF CLETTERR #O"022"#;  DEF CLETTERS #O"023"#;
DEF CLETTERT #O"024"#;  DEF CLETTERU #O"025"#;  DEF CLETTERV #O"026"#;
DEF CLETTERW #O"027"#;  DEF CLETTERX #O"030"#;  DEF CLETTERY #O"031"#;
  
DEF CDIGIT1 #O"034"#;   DEF CDIGIT2 #O"035"#;   DEF CDIGIT3 #O"036"#; 
DEF CDIGIT4 #O"037"#;   DEF CDIGIT5 #O"040"#;   DEF CDIGIT6 #O"041"#; 
DEF CDIGIT7 #O"042"#;   DEF CDIGIT8 #O"043"#; 
  
#        CONSTANTS FOR COMPARISONS           #
  
DEF NOTEXT #(LENGTH(LIN) EQ 0 OR B<04,21>LINE[0] EQ O"2653377")#; 
DEF NULLIN #O"43760000000000000000"#;  # NULL LINE, FSE CHARSET      #
DEF BLANKLIN #O"01325577400000000000"#; # TWO BLANK AND END OF LINE  #
DEF ALLBLANKS #O"01325526532552653255"#; # WORD OF BLANKS, FSE CHARSET #
DEF FIRSTCMD #O"01142312002221205220"#;  # -STARTUP, FSE CHARSET #
DEF LINECMD #O"00460512132140443405"#;  # SET LINE, FSE CHARSET # 
  
#    PUNCTUATION MARKS THAT CAN BE USED IN EDITING SYNTAX    #
  
# NOTE THAT FOR A 63 CHARACTER SET SYSTEM, THE INTERNAL DEFINITIONS # 
# FOR COLON AND PERCENT (00 AND 63 OCTAL) WILL BE REVERSED AT PRESET. # 
# THE SYMBOLIC CONSTANTS CCOLON AND CPERCENT, HOWEVER, REMAIN AT 000 #
# AND 063 OCTAL.  THE TABLES WHICH PROVIDE SYNTAX ATTRIBUTES WILL MAP # 
# BOTH CODES IDENTICALLY FOR EITHER 63 OR 64 CHARACTER SET SYSTEMS. # 
  
DEF CCOLON     #O"000"#;           DEF CUNDERBAR  #O"065"#; 
DEF CPLUS      #O"045"#;           DEF CEXCLAM    #O"066"#; 
DEF CMINUS     #O"046"#;           DEF CAMPER     #O"067"#; 
DEF CASTERISK  #O"047"#;           DEF CQUOTE     #O"070"#; 
DEF CSLASH     #O"050"#;           DEF CQUESTION  #O"071"#; 
DEF CLPAREN    #O"051"#;           DEF CLANGLE    #O"072"#; 
DEF CRPAREN    #O"052"#;           DEF CRANGLE    #O"073"#; 
DEF CDOLLAR    #O"053"#;           DEF CATSIGN    #O"074"#; 
DEF CEQUAL     #O"054"#;           DEF CBAKSLASH  #O"075"#; 
DEF CBLANK     #O"055"#;           DEF CUPARROW   #O"076"#; 
DEF CCOMMA     #O"056"#;           DEF CSEMCOLON  #O"077"#; 
DEF CPERIOD    #O"057"#;           DEF CGRAVE     #O"100"#; 
DEF CPOUND     #O"060"#;           DEF CLEFTCURL  #O"133"#; 
DEF CLBRACKET  #O"061"#;           DEF CVERTICAL  #O"134"#; 
DEF CRBRACKET  #O"062"#;           DEF CRITECURL  #O"135"#; 
DEF CPERCENT   #O"063"#;           DEF CTILDE     #O"136"#; 
DEF CDBLQUOTE  #O"064"#;           DEF CRUBOUT    #O"137"#; 
DEF CENDLINE   #O"177"#;           DEF CNOTHING   #O"200"#; 
PAGE                         # DEFS INTERNAL TO FSE MODULE #
  
DEF MOD(AA,BB) #((AA)-(((AA)/(BB))*(BB)))#; 
DEF BOOLSAME(AA,BB) #(((AA) AND (BB)) OR NOT((AA) OR (BB)))#; 
DEF BOOLDIFF(AA,BB) #(((AA) AND NOT(BB)) OR ((BB) AND NOT(AA)))#; 
  
DEF LARGENUM #O"7777777"#;   # LARGEST POSSIBLE LINE PTR   #
  
DEF TOPF(PARM) #REGLINE[FILETOPM1+PARM]#; 
DEF BOTF(PARM) #REGLINE[FILEBOTM1+PARM]#; 
DEF CURF(PARM) #REGLINE[FILECURM1+PARM]#; 
DEF FDLF(PARM) #REGLINE[FILEFDLM1+PARM]#; 
DEF TOPS(PARM) #REGLINE[PAGETOPM1+PARM]#; 
DEF BOTS(PARM) #REGLINE[PAGEBOTM1+PARM]#; 
DEF LTPS(PARM) #REGLINE[LASTTOPM1+PARM]#; 
DEF TOPC(PARM) #REGLINE[LISTTOPREG]#; 
DEF BOTC(PARM) #REGLINE[LISTBOTREG]#; 
DEF TOPP(PARM) #REGLINE[TOPPROCREG]#; 
DEF BOTP(PARM) #REGLINE[BOTPROCREG]#; 
DEF CURP(PARM) #REGLINE[CURPROCREG]#; 
DEF TOPA(PARM) #REGLINE[TOPAUDITREG]#;
DEF BOTA(PARM) #REGLINE[BOTAUDITREG]#;
DEF CURA(PARM) #REGLINE[CURAUDITREG]#;
DEF TOPK(PARM) #REGLINE[FKEYTOPREG]#; 
DEF BOTK(PARM) #REGLINE[FKEYBOTREG]#; 
DEF REGSTCLIN(PARM) #REGLINE[PARM]#;  # STORED BACK CURRENT LINE #
  
DEF LTOY(LINE,SPLIT) #LINE-TOPS(SPLIT)+TITLEROW[SPLIT]#;
DEF YTOL(YCUR,SPLIT) #YCUR-TITLEROW[SPLIT]+TOPS(SPLIT)#;
  
STATUS TYPST
  DIGIT,
  PLUS, 
  MINUS,
  DELIMIT,
  COLON,
  PAREN,
  EQUAL,
  LETTER, 
  SEMI, 
  EOL,
  OTHER,
  CONTROL;
  
STATUS DIGITST
  DUMMY,
  LINE1,
  LINE2,
  TARGET, 
  TO, 
  FILLER, 
  LIMIT,
  TAB;
  CONTROL IFNQ DIGITST"LINE1",1; BAD; CONTROL FI; 
  CONTROL IFNQ DIGITST"LINE2",2; BAD; CONTROL FI; 
  CONTROL IFNQ DIGITST"TARGET",3; BAD; CONTROL FI;
  CONTROL IFNQ DIGITST"TO",4; BAD; CONTROL FI;
  
STATUS STRINGST 
  LOCATE1,
  LOCATE2,
  CHANGE1,
  CHANGE2;
  
STATUS EXECST 
  APPEND, 
  CENTER, 
  COPY, 
  DELETE, 
  LOCATE, 
  MODIFY, 
  MOVE, 
  REPLACE,
  TYPE; 
  
STATUS FILCMDST 
  COPY, 
  MOVE; 
  
STATUS NUMST
  INTERPRET,
  PREFER; 
  
STATUS ROWST
  EMPTY,
  COMMAND,
  TITLE,
  LABEL,
  TEXT, 
  RESPONSE; 
  
STATUS KEYST
               # ALL COMMANDS # 
               ACMD, BCMD, CCMD, DCMD, DAMD, EDMD,
               FCMD, GCMD, HCMD, ICMD, LCMD,
               MCMD, PCMD, QCMD, RCMD, SCMD,
               TCMD, UCMD, VCMD,
  
               # ALL GENERAL COMMAND PARAMETERS # 
               APRM, BPRM, CPRM, EPRM, FPRM, HPRM, IPRM, LPRM, MPRM,
               NPRM, PPRM, QPRM, RPRM, SPRM, TPRM, UPRM, WPRM,
               XPRM, YPRM, ZPRM,
  
               # ALL SET COMMAND OBJECTS PLUS SOME VALUES # 
               SETA, SETC, SETD, SETE, SETF, SETH, SETI, SETJ, SETK,
               SETL, SETM, SETN, STNO, SETP, SETR, SETS, SETT,
               SETU, SETV, SETW, SETX, SETY, SYES, SETZ,
  
               # ALL FSE COMMAND OPTIONS #
               XASC, XASC8, XA8, XCHA, XDIS, XFIL, XGET,
               XMAR, XNOR, XREA, XSPL,
  
               # SET VIEW SPECIALS #
               VCOL, VEDI, VIN, VLIN, VOFF, VSPL, VWAR, 
  
               # DOT COMMAND SUBCOMMANDS #
               WCEN, WDLC, WEND, WINC, WFIL, WJOI, WPOS, WSPL,
  
               # SET KEY SPECIALS # 
               KLAB, KSHI,
  
               # SET NUMBERS SPECIALS # 
               NAUT, NBAS, NFOR, NONE,
  
               # QUIT OPTIONS # 
               QQUI, QPRO, QREP, QUND,
  
               # SET CHAR SPECIALS #
               CCTL, CTAB,
  
               # SET PROMPT OPTIONS # 
               PNDK, PYDK;
  
  
DEF EORCON #O"51051722520000000000"#;  # (EOR)   #
DEF EOFCON #O"51051706520000000000"#;  # (EOF)   #
  
# THE FOLLOWING CONSTANTS ARE FOR PROMTS AND CURSOR CONTROL.       #
# QUE MEANS QUESTION MARK, COL MEANS COLON, DOL MEANS DOLLAR.      #
# ALL ARE IN DISPLAY CODE , NO INTERNAL CODE.                      #
  
DEF AQCCKCON    #O"01710000135300000000"#;   # A QUE COL COL K DOL #
DEF AQCKCON     #O"01710013530000000000"#;   # A QUE COL K DOL     #
DEF CKCON       #O"00135300000000000000"#;   # COL K DOL   #
DEF BCCKCON     #O"55000013530000000000"#;   # BLANK COL COL K DOL #
DEF NULLCON     #O"53000000000000000000"#;   # DOL   #
DEF QCCKCON     #O"71000013530000000000"#;   # QUE COL COL K DOL   #
DEF BLANKCON    #O"55530000000000000000"#;   # BLANK DOL #
                                               CONTROL LIST;
