COMFDS2 
COMMON
  
#     COMFDS2 - LAST SECTION OF DATA SEGMENT #
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
                                                                      # 
*     COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
                                                                      # 
  ARRAY TWOFILES [1:2]; 
   BEGIN
    ITEM FILEATTR;           # ALL ATTRIBUTES, THIS FILE   #
    ITEM FILENAM C(0,0,7)=[" "," "];
    ITEM INITNMBR U(0,54,2);
    ITEM INITFILE U(0,54,1)=[0,0];
    ITEM NUMBERED U(0,55,1)=[0,0];
    ITEM LOCKED   U(0,56,1)=[0,0];
    ITEM CHANGED  U(0,57,1)=[0,0];
    ITEM ASCII    U(0,58,2)=[0,0];
   END
  
  ITEM USRBRK=0;             # NOTIFIES US OF INTERRUPT    #
  
  ARRAY BOOLEANS [0:0] P(2);         # BOOLEAN FLAGS #
    BEGIN # ARRAY BOOLEANS #
    ITEM ALLBOOLS1   U(00,00,60)=[0];  # CLEAR ALL WORD ONE FLAGS # 
    ITEM FORCESINGLE B(00,00,01);    # FORCE SINGLE EDITOR SOON # 
    ITEM CONNECTED   B(00,01,01);    # HOOKING UP TO MULTI #
    ITEM FORCENULL   B(00,02,01);    # USED FOR MULTI DRAINALL #
    ITEM SMFINCTL    B(00,03,01);    # RECOVERY VERSUS NORMAL END # 
    ITEM SMFVICTIM   B(00,04,01);    # SMFEX HAD TERRIBLE PROBLEM # 
    ITEM ZEROCOLASK  B(00,05,01);    # THE COLON QUESTION WAS "ASKED" # 
    ITEM IOWRTEOR    B(00,06,01);    # NEED EOR NEXT WRITE #
    ITEM IORESUMED   B(00,07,01);    # USE OLD WORK OR NEW INITED # 
    ITEM IOACT       B(00,08,01);    # IO ACTIVE #
    ITEM IOREAD      B(00,09,01);    # ACTIVE IO IS READ #
    ITEM IOWRITE     B(00,10,01);    # ACTIVE IO IS WRITE # 
    ITEM IOAPEND     B(00,11,01);    # ACTIVE IO IS APPEND #
    ITEM FOUNDOTHER  B(00,12,01);    # RANGE IN BOUNDS #
    ITEM UPPERSEARCH B(00,13,01);    # SEARCH AS THOUGH UPPER-CASE #
    ITEM APSTRREAD   B(00,14,01);    # APPLICATION STRING READ #
    ITEM FORCEFIELD  B(00,15,01);    # USED TO PARSE TAB SPECS #
    ITEM SOFTTAB     B(00,16,01);    # SOFT TABCHAR KEY STRUCK #
    ITEM WORDSEARCH  B(00,17,01);    # WORD MODE, LOCATE/REPLACE #
    ITEM SCANBLOCK   B(00,18,01);    # SCANNER DETECTED "BLOCK" # 
    ITEM SCANWORD    B(00,19,01);    # SCANNER DETECTED "WORD" #
    ITEM FORWARD     B(00,20,01);    # SCANNER DETECTED "NEXT" #
    ITEM BACKWARD    B(00,21,01);    # SCANNER DETECTED "PREVIOUS" #
    ITEM DONTPRINT   B(00,22,01);    # SCANNER DETECTED "QUIET" # 
    ITEM FOUND       B(00,23,01);    # SEARCH/SCAN RESULT # 
    ITEM FIELDFLG    B(00,24,01);    # COLUMNAR FIND/SUBST #
    ITEM LINECHANGED B(00,25,01);    # LINE CHANGED ON SCREEN # 
    ITEM ALIGNGOOD   B(00,26,01);    # ALIGN CALCULATION PRECISE #
    ITEM SHORTTITLE  B(00,27,01);    # SHORT TITLE FORMAT CHOSEN #
    ITEM COMPUTEDPOS B(00,28,01);    # CURSOR POSITION PRE-COMPUTE #
    ITEM ELLIPSIS    B(00,29,01);    # LOCATE LINES WITH BOTH STRINGS # 
    ITEM ESCAPE      B(00,30,01);    # ESCAPE TEXT PROMPTING #
    ITEM NXTESCAPE   B(00,31,01);    # NEXT ESCAPE TEXT PROMPTING # 
    ITEM CANINTER    B(00,32,01);    # BREAKABLE COMMAND #
    ITEM TXTINCMD    B(00,33,01);    # TEXT EMBEDDED, NO PROMPT # 
    ITEM CHARRANGE   B(00,34,01);    # CHARACTER-ORIENTED RANGES #
    ITEM ALLOWBACK   B(00,35,01);    # COMMAND ALLOWS BACKWARDS # 
    ITEM ALLASCII    B(00,36,01);    # FORCE ALL FILES ASCII #
    ITEM FLOAT       B(00,37,01);    # DISPLAY FLOAT NUMBERS #
    ITEM AUTOINDENT  B(00,38,01);    # SET JUMP ENABLED # 
    ITEM PAGELAST    B(00,39,01);    # LAST COMMAND WAS PAGE #
    ITEM DELETEDONE  B(00,40,01);    # FOR EXEC AND DELZ #
    ITEM SCREENMODE  B(00,41,01);    # SCREEN-EDIT MODE # 
    ITEM FIRSTEVENT  B(00,42,01);    # FIRST VDT INPUT EVENT #
    ITEM SCANUPPER   B(00,43,01);    # "UPPER" KEYWORD SCANNED #
    ITEM AUDITOFF    B(00,44,01);    # "UNDO" AUDIT TRAIL DISABLED #
    ITEM NONDEFAULT  B(00,45,01);    # NON-TRIVIAL RANGE SCANNED #
    ITEM PROCACTIVE  B(00,46,01);    # SEQUENTIAL PROC FILE ACTIVE #
    ITEM SCANHOME    B(00,47,01);    # "HOME" PARAMETER SCANNED # 
    ITEM SUBSTONCE   B(00,48,01);    # SUBSTITUTE ONLY ONCE/LINE #
    ITEM HARDFN      B(00,49,01);    # HARDWARE FN VS SIMULATE #
    ITEM PROMPTING   B(00,50,01);    # USED FOR SCREEN PROMPTS #
    ITEM AUDITUSED   B(00,51,01);    # AUDIT TRAIL RECENTLY USED #
    ITEM FIRSTRANGE  B(00,52,01);    # FIRST PASS OF DORANGE LOOP # 
    ITEM LASTRANGE   B(00,53,01);    # LAST PASS OF DORANGE LOOP #
    ITEM KILLMARKS   B(00,54,01);    # KILL THE MARKS # 
    ITEM ABORTED     B(00,55,01);    # SOMETHING WRONG LAST EDIT #
    ITEM EXITFLAGS   U(00,56,04);    # MUST COVER ALL EXIT FLAGS #
    ITEM EXITSAVE    B(00,56,01);    # REPLACE PFM MACRO WANTED # 
    ITEM EXITQUIT    B(00,57,01);    # SUPPRESS REBUILD # 
    ITEM EXITCMD     B(00,58,01);    # CURRENT COMMAND IS EXIT #
    ITEM EXITEXCST   B(00,59,01);    # EXECUTE NOS CONTROL STATEMENT #
  
    ITEM ALLBOOLS2   U(01,00,60)=[0];  # CLEAR ALL WORD TWO FLAGS # 
    ITEM PAINTAGAIN  B(01,00,01);    # FORCE SCREEN PAINT # 
    ITEM ZEROCOLIN   B(01,01,01);    # SOME 6/12 FILES HAD 00 COLON # 
                                     # AT INITIAL FILE BUILD #
    ITEM ZEROCOLOUT  B(01,02,01);    # USER WANTS 00 COLONS FOR 6/12 #
    ITEM FORCEDHOME  B(01,03,01);    # FORCED TO PUT CURSOR AT HOME # 
    ITEM SCHSTRSPEC  B(01,04,01);    # SEARCH STRING SPECIFIED #
    ITEM FORCEAUTOP  B(01,05,01);    # FORCE AUTO HALF PAGE # 
    ITEM DATAKEYPRS  B(01,06,01);    # DATA KEY PRESSED # 
    ITEM SCANSFILE   B(01,07,01);    # SOURCE FILE FOR COPY/MOVE SEEN # 
    ITEM SCANTO      B(01,08,01);    # SCANNER DETECTED "TO" #
    ITEM SCNLINX     B(01,09,01);    # SCNLIN DETECTED "X" #
    ITEM SCNLINY     B(01,10,01);    # SCNLIN DETECTED "Y" #
    ITEM SCNLINZ     B(01,11,01);    # SCNLIN DETECTED "Z" #
    ITEM SCNONCE     B(01,12,01);    # ASSURE ONLY ONE RESCAN # 
    ITEM CMDWASDLTE  B(01,13,01);    # COMMAND WAS "DELETE" # 
    ITEM FORCEAUTOR  B(01,14,01);    # FORCE AUTO RETURN #
    ITEM SCANMARK    B(01,15,01);    # SCANNER DETECTED "MARK" #
    ITEM RIGHTJUST   B(01,16,01);    # RIGHT JUSTIFY FOR .FILL #
    ITEM ECHOOFF     B(01,18,01);    # DO NOT ECHO DIRECTIVES # 
    ITEM FUTUREUSE18 B(01,18,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE19 B(01,19,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE20 B(01,20,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE21 B(01,21,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE22 B(01,22,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE23 B(01,23,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE24 B(01,24,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE25 B(01,25,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE26 B(01,26,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE27 B(01,27,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE28 B(01,28,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE29 B(01,29,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE30 B(01,30,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE31 B(01,31,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE32 B(01,32,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE33 B(01,33,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE34 B(01,34,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE35 B(01,35,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE36 B(01,36,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE37 B(01,37,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE38 B(01,38,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE39 B(01,39,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE40 B(01,40,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE41 B(01,41,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE42 B(01,42,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE43 B(01,43,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE44 B(01,44,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE45 B(01,45,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE46 B(01,46,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE47 B(01,47,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE48 B(01,48,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE49 B(01,49,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE50 B(01,50,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE51 B(01,51,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE52 B(01,52,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE53 B(01,53,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE54 B(01,54,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE55 B(01,55,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE56 B(01,56,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE57 B(01,57,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE58 B(01,58,01);    # FOR FUTURE (CDC) USE # 
    ITEM FUTUREUSE59 B(01,59,01);    # FOR FUTURE (CDC) USE # 
    END # ARRAY BOOLEANS #
  
  
  ARRAY SIZES [0:0] P(11);           # WIDTHS, ETC. # 
    BEGIN # ARRAY SIZES # 
    ITEM BLANKS     I(00)=[1];       # BLANKS AFTER SEQUENCE NO.S # 
    ITEM GROUPSIZ   I(01)=[9];       # LINES PRINTED BY V IN LINE # 
    ITEM WIDTH      I(02)=[160];     # DEFAULT LINE WIDTH FOR SVW # 
    ITEM NUMWIDBLK  I(03)=[6];       # SEQUENCE NUMBERS PLUS BLANKS # 
    ITEM USRNUMCOL  I(04)=[1];       # DEFAULT COLUMNS TO DISPLAY # 
    ITEM USRNUMLIN  I(05)=[1];       # DEFAULT LINES TO DISPLAY # 
    ITEM USRSPLTSZ  I(06)=[-1];      # USER SPLIT SIZE #
    ITEM EDITFIELD  I(07)=[250];     # DEFAULT EDIT FIELD FOR SVE # 
    ITEM FILLLEFT   I(08,00,12)=[0]; # SWF LEFT MARGIN #
    ITEM FILLRIGHT  I(08,12,12)=[64];# SWF RIGHT MARGIN # 
    ITEM FILLFIRST  I(08,24,12)=[4]; # SWF INDENTATION #
    ITEM INFLDBGN   I(08,36,12)=[0]; # LEFT *IN* MARGIN # 
    ITEM INFLDEND   I(08,48,12)=[0]; # RIGHT *IN* MARGIN #
    ITEM UNPRINT    I(09)=[CUPARROW];# UNPRINTABLE CHARACTERS # 
    ITEM DFINFIELD  I(10,00,24);     # DEFAULT *IN* MARGINS(*SVI*) #
      ITEM DFINBGN  I(10,00,12)=[1];   # DEFAULT LEFT *IN* MARGIN # 
      ITEM DFINEND  I(10,12,12)=[250]; # DEFAULT RIGHT *IN* MARGIN #
    ITEM CDCRESVRD  I(10,24,36)=[0]; # RESERVED FOR CDC # 
    END # ARRAY SIZES # 
  
  ARRAY VARYCHARS(6);       # VARIABLE SYNTAX CHARACTERS  # 
   BEGIN                     # MUST MATCH SETKEYS ARRAY    #
    ITEM BLKCHAR    (0)=[CAMPER];      # M-MOD BLANK       #
    ITEM COPCHAR    (1)=[CBLANK];      # M-MOD COPY        #
    ITEM DELCHAR    (2)=[CPOUND];      # M-MOD DELETE      #
    ITEM INSCHAR    (3)=[CUPARROW];    # M-MOD INSERT      #
    ITEM TABCHAR    (4)=[CBAKSLASH];   # TAB     #
    ITEM TRNCHAR    (5)=[CEXCLAM];     # M-MOD TRUNCATE    #
   END
  ARRAY TABVECTOR [1:TABWORDS]; 
    BEGIN                            # 20 TABS, DEFAULT FOR FORTRAN # 
    ITEM TABVCTWRD=[O"01443400000000000000",0,0]; 
    END 
  
  # THE WORDFLAGS ARRAY INDICATES WHICH INTERNAL CHARACTER SET VALUES # 
  # ARE TREATED AS ALPHANUMERIC RATHER THAN AS PUNCTUATION, FOR THE # 
  # PURPOSES OF UPPER-CASE SEARCHING, THE DELETE WORD OPERATION, AND #
  # THE CURRENT WORD MICRO.  THE ARRAY USES FOUR WORDS IN WHICH THE # 
  # FIRST 32 BITS ARE USED.  THE INITIAL VALUE TURNS ON THE BITS FOR #
  # ALL UPPER AND LOWER CASE LETTERS AND FOR DIGITS.  THE ORDER OF #
  # THE BITS IS HARD CODED FOR THE STANDARD DEFINITION OF THE # 
  # INTERNAL CHARACTER SET. # 
  
  ARRAY WORDFLAGS [0:3] P(1);        # PUNCTUATION VS ALPHANUMERIC #
    BEGIN # ARRAY WORDFLAGS # 
    ITEM WORDFLAG   I=               # CHARACTER SET FLAGS #
    [O"3777 7777 7760 0000 0000", 
     O"7600 0000 0000 0000 0000", 
     O"3777 7777 7000 0000 0000", 
     O"0000 0000 0000 0000 0000"];
    END # ARRAY WORDFLAGS # 
  
  ITEM CURSPLIT=1;           # SELECT SPLIT SPLITTAGE     # 
  ITEM CURFILE=1;            # SELECT FILE 1 OR 2         # 
  ITEM CURCURSOR=0;          # CURRENT X-CURSOR  #
  ITEM TEMPCURLIN=0;         # TEMP STORAGE FOR CURRENT LINE #
  ITEM NEWCURSOR=0;          # NEXT X-CURSOR     #
  ITEM OLDCURSOR=0;          # PREVIOUS X-CURSOR #
  ITEM OLDLINPTR=0;          # PREVIOUS START LINE #
  ITEM OLDCURFIL=0;          # PREVIOUS CURRENT FILE #
  ITEM OLDFDLF1=0;           # PREVIOUS DIRECTORY ID FOR FIRST FILE # 
  ITEM OLDFDLF2=0;           # PREVIOUS DIRECTORY ID FOR SECOND # 
  
  ITEM FILNUM=1;         # NEW FILE CHOICE SCANNED     #
  ITEM CHARPARM=0;       # 0=DONT CARE, 1=NORMAL, 2=6/12, 3=8/12 #
  ITEM GETPARM=0;        # 0=DONT PFM, 1=IF NEEDED, 2=FORCED     #
                         # 3 = FORCED LOCAL READ W/OUT PFM       #
  ITEM SAVECURL=1;
  ITEM LINENO=-1;            # NUMBER ON CUR LINE          #
  ITEM INCR=100;
  ITEM LOCSTRLEN1=0, LOCSTRLEN2=0;
  ITEM CHGSTRLEN1=0, STRINGLEN=0; 
  ITEM KEYWDTYPE=1; 
  ITEM WIDTHFOUND=0;
  ITEM DINCR=100;            # DEFAULT INCR      #
  ITEM STACKPTR=-1; 
  ITEM ORIGSTKPTR=0;                # ORIGINAL STACK DEPTH #
  ITEM DATAPTR=-1;
  
  ITEM ERRSTRING C(80)=" $";         # HOLDS RESPONSE MESSAGE # 
  ITEM ERRCURSOR=-1;
  
  ITEM FIELDNDX=0;           # WHICH TAB FIELD IS IN USE   #
  ITEM FIELDBGN=0;           # FOR COLUMN SPEC IN F,S CMDS #
  ITEM FIELDEND=0;
  ITEM FIELDTARGET=0;        # WHICH FIELD FOR TARGET ADDRESS        #
  ITEM PROCESSNDX=0;         # USED BY PROCESS   #
  ITEM LASTPROCESS=0; 
  ITEM LIMIT=1;              # USER SPECIFIED LIMIT        #
  ITEM LCOUNT=0;             # COUNTS VERIFIED LINES IN RNG # 
  ITEM FINDCONTROL=0;        # CONTROLS TEXT SEARCH OPTIONS # 
                             # BOTTOM BIT=FIRST/LAST RANGE  # 
                             # NEXT BIT UP=WORD OR ELLIPSIS # 
                             #   OR CASELESS OR FIELD       # 
  
  ARRAY SFKEYSPECS [0:0]; 
    BEGIN   # ARRAY SFKEYSPECS #
    ITEM SFKEYDEFS  I(00,06,18) = [1];     # SHIFTED F-KEYS DEFINED # 
    ITEM SFKEYSHOW  I(00,24,18) = [1];     # SHIFTED F-KEYS SELECTED #
    ITEM SHIFTFKEY  I(00,42,18) = [1];     # DISPLAY SHIFTED F-KEYS # 
    END     # ARRAY SFKEYSPECS #
  ITEM SCANPOS=0;            #  SYNTAX SCAN CURSOR          # 
  ITEM TOKENTYPE=0;          # RETURNED BY TOKEN #
  ITEM TOKENPOS=0;
  ITEM TOKENVAL=0;
  ITEM TOKENSYM C(10)="          "; 
  ITEM TOKENCHAR=CBLANK;
  ITEM TOKENLEN=1;
  ITEM ORIGSCNLIN=0;
  ITEM CMDMARKER=0; 
  ITEM EXPANDAT=-1;          # CMDLINE POSITION TO EXPAND MICROS   #
  ITEM EXTENDSIZE=0;
  ITEM THISEXTEND=0;
  ITEM KEYWDNDX=0;
  ITEM WHICHLIN=0, WHICHSTR=0, WHICHDGT=0;
  
  ITEM WORKORG C(7);                   # ORIGINAL WORKFILE NAME # 
  ITEM READNAM C(7)="       ";         # READ/WRITE FILE #
  ITEM PROCNAM C(7)="FSEPROC";         # NAME PROCEDURE LIBRARY    #
  ITEM CURPROCNAM C(7); 
  ITEM PROCREC C(7);
  
  ITEM SPLIT I; 
  ITEM SCREENLIMIT=0; 
  ITEM COMMANDROW=0;
  ITEM RESPONSEROW=0; 
  ITEM ROWSUSED=0;
  ITEM FKEYNUMROW=1;
  ITEM FKEYROW=0; 
  ITEM FKEYCHARS=6; 
  ITEM FKEYSHOW=8;
  ITEM FKEYLEN=79;
  ITEM FKEYPAD=0; 
  ITEM XCURSOR=0; 
  ITEM YCURSOR=0; 
  ITEM OLDVTXCURS=0;
  ITEM OLDVTYCURS=0;
  ITEM FKEYMSKON  U;
  ITEM FKEYMSKOFF U;
  ITEM FKEYNDX=0; 
  ITEM FKEYSPC1   C(2); 
  ITEM FKEYSPC2   C(4); 
  ITEM NUMMARKS=0;
  ITEM SCRNPT1=0, SCRNPT2=0, SCRNPT3=0; 
  ITEM SCRNPT4=0, SCRNPT5=0, SCRNPT6=0; 
  
  ITEM ATTCOUNT=0;                   # ATTRIBUTE MARK COUNT # 
  ITEM BACKIN=0;                     # BACKSTACK IN POINTER # 
  ITEM BACKOUT=0;                    # BACKSTACK OUT POINTER #
  ARRAY NONTRIVSTK [1:2,1:4];        # RECENT NON-ZZZNULL FILE #
    BEGIN 
    ITEM NONTRIVFILE=[ [0,0] [0,0] [0,0] [0,0] ]; 
    END 
  
  ITEM EXECNDX=0;             # FOR EXEC         #
  ITEM FILCMDNDX=0;          # FOR FILCMD       # 
  ITEM DORNGCTR=0;                     # FOR DORANGE, POSN #
  
  ITEM LINCTR=0;
  ITEM CHRPTR1=0,  CHRPTR2=0,  CHRPTR3=0; 
  ITEM LINPTR1=0,  LINPTR2=0,  LINPTR3=0; 
  ITEM FILPTR1=0,  FILPTR2=0,  FILPTR3=0; 
  ITEM LINNUM1=0,  LINNUM2=0,  LINNUM3=0; 
  
  ITEM AUDITNEXT=0; 
  
  ARRAY DATASTACK [0:MAXDATA];   ITEM DATASTK=[MAXDATA(0),0]; 
  
  ARRAY LIN [0:BUFWID]; 
    BEGIN 
    ITEM LINE=[BUFWIDP1(NULLIN)]; 
    END 
  ARRAY CMDLIN[0:BUFWID]; 
    BEGIN 
    ITEM CMDLINE=[BUFWIDP1(NULLIN)];
    END 
  ARRAY TTYLIN[0:BUFWID]; 
    BEGIN 
    ITEM TTYLINE=[BUFWIDP1(NULLIN)];
    END 
  ARRAY TMPLIN[0:BUFWID2];
    BEGIN 
    ITEM TMPLINE=[BUFWID2P1(0)];
    END 
  
  
  # REGSTACK IS THE VECTOR OF RELOCATABLE LINE ORDINALS WHICH # 
  # IS MAINTAINED BY THE COMPASS ROUTINE *FASTRLC*.  #
  
  ARRAY REGSTACK [0:MAXREG]; ITEM REGLINE=[0,MAXREG(0)];
  
  ARRAY STKFILES [0:MAXSTACK]; ITEM STKFILE=[0,MAXSTACK(0)];
  ARRAY XYZFILES [0:2]; ITEM XYZFILE=[0,0,0]; 
  ARRAY XYZCHARS [0:2]; ITEM XYZCHAR=[-1,-1,-1];
  ARRAY MRKFILES [0:1]; ITEM MRKFILE=[0,0]; 
  ARRAY MRKCHARS [0:1]; ITEM MRKCHAR=[-1,-1]; 
  
  ITEM BUILDCIO=0;                   # TOTAL CIO-S IN FILE BUILD #
  ITEM ACCTCIO=0;                    # TOTAL CIO-S PER SESSION #
  ITEM ACCTTRANS=0;                  # TOTAL TRANSACTIONS PER SESSION # 
  ITEM ACCTPRU=0;                    # TOTAL PRU-S IN SESSION # 
  ITEM ACCTOUT=0;                    # TOTAL WORDS TERMINAL OUTPUT #
  
  ITEM TEMP=0;               # STACKABLE TEMP STORAGE      #
  
  ITEM DATAEND;              # END OF DATA PRESERVED BETWEEN EDITS   #
  
  # FORMAT OF REST OF COMMON MAY BE MODULE-DEPENDENT #
PAGE                         # DISPATCHED DATA FOR OTHER MODULES     #
  
  CONTROL IFEQ MULTI,1; 
    ITEM TTIADDR=0;            # SMFEX   DATA      #
    ITEM TTILEN=0;
    ITEM TTINEXT=0; 
    ITEM TTILAST=0; 
    ITEM TTOADDR=0; 
    ITEM TTOLEN=0;
    ITEM TTOTYPE=0; 
    ITEM TTOQUIT B=FALSE; 
    CONTROL IFEQ METERING,1;
      ITEM TTOWORDS=0;
      ITEM TTOBLOCKS=0; 
    CONTROL FI; 
    ITEM RSTKSAVE=0;         # FOR REPAIR OF STACK ON ERROR          #
  CONTROL FI; 
  
  
  BASED ARRAY STR(24); ITEM ST C(0,0,240);       # FOR TTF #
  ITEM STL=0;                # STRING LENGTH     #
  ITEM TTCBC=0;              # CURRENT BUFFER CHAR         #
  ITEM NUMS1 C(20);          # NUMBER BUFFER     #
  ITEM S1=0, S2=0, S3=0, S4=0;         # TEMPORARIES       #
  ITEM TTOWB;                # TTY OUT WORD BUFF #
  ITEM TTOCB;                # TTY OUT CHAR BUFF #
  
  
  ARRAY PATH[0:MAXDEPTH] S(5);         # FOR WORKIO        #
    ITEM PADISP (0)=[MAXDEPTH(0),0],
         PAFIRST (1)=[MAXDEPTH(0),0], 
         PALAST (2)=[MAXDEPTH(0),0],
         PAHEAD (3)=[MAXDEPTH(0),0],
         PADA       U(3,0,18),         # SACRED BIT LOCATION         #
         PADEPTH   U(3,18,6), 
         PADIRTY    B(3,48,1),
         PATOP      B(3,49,1),
         PADIR      B(3,50,1),
         PADATA     B(3,51,1),
         PAFINAL    U(3,54,6),         # SACRED BIT LOCATION         #
         PACACHE    (4)=[MAXDEPTH(-1),-1];
  
  ARRAY CACHECONTROL [0:MAXCACHE];
   BEGIN
    ITEM CACHEDIRTY B(0,0,1)=[FALSE,MAXCACHE(FALSE)]; 
    ITEM CACHEOWNED B(0,1,1)=[FALSE,MAXCACHE(FALSE)]; 
    ITEM CACHEAGE   I(0,30,30)=[-1,MAXCACHE(-1)]; 
   END
  
  ITEM CURRENT=0;               # REAL CURRENT LINE POSITION  # 
  ITEM NEWCURL=0; 
  ITEM OLDCURL=0; 
  ITEM AGECOUNT=0;
  ITEM PALVL=0; 
  ITEM CURNW=0; 
  ITEM DANEXT=0;             # NEXT DA TO ALLOC  #
  ITEM MAXDA=0; 
  ITEM DELETCTL=0;           # CONTROL AUTO-POS AFTER DELETE         #
  ITEM FETCHGUIDE=0;         # CURRENT GUIDELINE FOR PREFETCH        #
  ITEM ARRAYLEN=0;
  ITEM ARRAYPRUS=0; 
  ITEM DATALEN=0; 
  ITEM DATAPRUS=0;
  
  ITEM CIOCOUNT=0;           # FOR STATISTICS COLLECTION   #
  ITEM RUNTIME=0;            # DITTO   #
  
  ITEM SPINTIME=0;           # TIME WASTED TO HOLD TASK    #
  ITEM SPINSTART=0; 
  
  
                             # END OF SWAPPED DATA         #
  ITEM SWAPEND;              # NOT INCLUDED IN BLOCK       #
PAGE                         # DISPATCH, UNSWAPPED DATA              #
  
  #    DISPATCHED BUT UNSWAPPED WORKIO DATA   # 
  
  ITEM PL, TPL, DISP, ODA, ONL, FIRST, LAST, NL;
  ITEM NWBEFORE,NWNEW,NWAFTER;
  BASED ARRAY NEW;; 
  ARRAY NDIR [0:1];  ITEM NEWDA U(0,0,18),  NEWNL U(0,42,18); 
  ITEM RDIN, RDOUT, LASTDA; 
  ITEM DSKSIZ = DISKSIZE, QUARTER;
  
  #   THE FOLLOWING BASED ARRAYS ARE "MOBILE", TEMPORARY   #
  
  BASED ARRAY FROM;;   BASED ARRAY TOO;;
  BASED ARRAY PRU[0:O"77"]; 
    ITEM PRUWORD, 
         DATWORD, 
         DATCHAR C(0,0,10), 
         DIRWORD, 
         DIRDA U(0,0,18), 
         DIRNL U(0,42,18);
  
  #   THE FOLLWING BASED ARRAYS ARE OF OTHER TYPES, BUT   # 
  #   THEIR POINTER WORDS BELONG IN THIS SEGMENT          # 
  
  CONTROL IFEQ MULTI,1; 
    BASED ARRAY SWAPRSTK;;             # USER'S COPY RENTSTK         #
    BASED ARRAY DISPRSTK;;             # TASK'S COPY RENTSTK         #
    BASED ARRAY TTOBUFFER[0:99]; ITEM TTOBUFF;  # TASK'S TTY OUTPUT  #
  CONTROL  FI;
  # LINEBUF REDEFINITION RESTRICTION - SEE FSESUBS INTERFACE #
  BASED ARRAY LINEBUF;;      # WORKIO/EDITOR INTERFACE     #
  BASED ARRAY MVLNBUF;;      # USED BY WORKIO FOR LINEBUF  #
  BASED ARRAY BFPRU[0:MAXDEPTH] S(O"100");       # DISK BUUFERS      #
    ITEM BFHEAD (0), BFDA U(0,0,18);   # MUST MATCH PAHEAD, PADA  # 
  BASED ARRAY OBF S(OBFSIZE);; # TEMP BUFF FOR SPLIT         #
  BASED ARRAY DISK;;         # CIRCULAR BUFFER   #
  BASED ARRAY FET S(FETSIZ);      # WORKING FET       # 
    ITEM FETWD0 (0),
      FETNAM C(00,00,07),            # LOGICAL FILE NAME             #
      FETAT  U(00,42,09),            # STATUS INFORMATION FROM *CIO* #
      FETCOD U(00,51,09),            # REQUEST/RETURN CODE           #
      FETDUN B(00,59,01),            # COMPLETE BIT                  #
      FETR   B(01,12,01),            # RANDOM PROCESSING BIT         #
      FETEP  B(01,15,01),            # ERROR PROCESSING BIT          #
      FETL   U(01,36,06),            # FET LEVEL                     #
      FETFIR U(01,42,18),            # FIRST                         #
      FETIN  U(02,42,18),            # IN                            #
      FETOUT U(03,42,18),            # OUT                           #
      FETFNT U(04,00,12),            # FNT POINTER                   #
      FETLIM U(04,42,18),            # LIMIT                         #
      FETLAW U(05,00,60),            # ADDR. OF LIST (FULL WORD)     #
      FETLA  U(05,42,18),            # ADDR. OF LIST OF RANDOM ADDR. #
      FETCRI U(06,00,30),            # CURRENT RANDOM INDEX          #
      FETW   B(06,30,01),            # RANDOM REWRITE REQUEST        #
      FETRR  U(06,31,29);            # RANDOM REQUEST PARAMETER      #
  
  BASED ARRAY READLST[0:RDLIM];  ITEM RDLIST; 
  
  
  # MULTI-USER VERSION ALLOCATES POINTER WORDS HERE FOR VARIOUS  #
  # EDITOR ARRAYS.  DUE TO DUPLICATE DECLARATIONS, BE CAREFUL IN #
  # CHANGING ANY OF THESE ARRAYS.  #
  
  CONTROL IFEQ MULTI,1; 
  
  BASED ARRAY ARRAYSTART;;  # THESE TWO BRACKET ALLOCATED MEMORY  # 
  BASED ARRAY ARRAYEND;;
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  
  BASED ARRAY TABLEHEADR [0:0] P(6);
    BEGIN                            # *TDU* TABLE HEADER INFORMATION # 
    ITEM TABHEADONE U(00,00,60);     # WORD ONE # 
    ITEM TABMODNAME C(00,00,07);     # MODEL NAME # 
    ITEM TABVERSION U(00,42,18);     # VERSION NUMBER # 
    ITEM TABHEADTWO U(01,00,60);     # WORD TWO # 
    ITEM TABSTRINPT U(01,00,12);     # OFFSET TO START OF INPUT TABLE # 
    ITEM TABSTRNMES U(01,12,12);     # OFFSET TO START OF KEY LABELS #
    ITEM TABSTRINIT U(01,24,12);     # OFFSET FOR INITIALIZATION DATA # 
    ITEM TABSTRAPPS U(01,36,12);     # OFFSET FOR APPLICATION STRINGS # 
    ITEM TABSTRENDT U(01,48,12);     # OFFSET TO END OF TABLE # 
    ITEM TABHEADTHR U(02,00,60);     # WORD THREE # 
    ITEM TABPTRHGTC U(02,00,04);     # PROTECTED RIGHT BEHAVIOR       # 
    ITEM TABPTLEFTC U(02,04,04);     # PROTECTED LEFT BEHAVIOR        # 
    ITEM TABPTUPCUR U(02,08,04);     # PROTECTED UP BEHAVIOR          # 
    ITEM TABPTDNCUR U(02,12,04);     # PROTECTED DOWN BEHAVIOR        # 
    ITEM TABUNRHGTC U(02,16,04);     # UNPROTECTED RIGHT BEHAVIOR     # 
    ITEM TABUNLEFTC U(02,20,04);     # UNPROTECTED LEFT BEHAVIOR      # 
    ITEM TABUNUPCUR U(02,24,04);     # UNPROTECTED UP BEHAVIOR        # 
    ITEM TABUNDNCUR U(02,28,04);     # UNPROTECTED DOWN BEHAVIOR      # 
    ITEM TABRESERV2 U(02,32,28);     # RESERVED                       # 
    ITEM TABHEADFOU U(03,00,60);     # WORD FOUR #
    ITEM TABCURADDT U(03,00,06);     # CURSOR ADDRESSING TYPE # 
    ITEM TABCURBIAS I(03,06,08);     # CURSOR BIAS FOR POSTIONING # 
    ITEM TABLEFTCUR U(03,14,04);     # CURSOR LEFT BEHAVIOR # 
    ITEM TABRGHTCUR U(03,18,04);     # CURSOR RIGHT BEHAVIOR #
    ITEM TABUPCURSR U(03,22,04);     # CURSOR UP BEHAVIOR # 
    ITEM TABDWNCRSR U(03,26,04);     # CURSOR DOWN BEHAVIOR # 
    ITEM TABLEFTCHR U(03,30,04);     # CHARACTER LEFT BEHAVIOR #
    ITEM TABRGHTCHR U(03,34,04);     # CHARACTER RIGHT BEHAVIOR # 
    ITEM TABLASTPOS U(03,38,04);     # LAST POSITION BEHAVIOR (CHAR) #
    ITEM TABXFIRSTY B(03,42,01);     # X BEFORE Y IN CURSOR OUTPUT #
    ITEM TABXDECIML U(03,43,03);     # X COORDINATE COUNT IF DECIMAL #
    ITEM TABYDECIML U(03,46,03);     # Y COORDINATE COUNT IF DECIMAL #
    ITEM TABRESERV3 U(03,49,11);     # RESERVED # 
    ITEM TABHEADFIV U(04,00,60);     # WORD FIVE #
    ITEM TABVTFLAGS U(04,00,60);     # VIRTUAL TERMINAL FLAGS # 
    ITEM TABVTHOMEU B(04,00,01);     # HOME UP FLAG # 
    ITEM TABVTPROTM B(04,01,01);     # TERMINAL HAS PROTECT # 
    ITEM TABVTDIFSS B(04,02,01);     # DIFFERENT SCREEN SIZES # 
    ITEM TABVTUNUSD B(04,03,01);     # UNUSED # 
    ITEM TABVTGUARD B(04,04,01);     # TERMINAL HAS GUARD # 
    ITEM TABVTABHME B(04,05,01);     # PROTECTED TAB GOES TO HOME # 
    ITEM TABVTABUPF B(04,06,01);     # TABS TO UNPROTECTED FIELDS # 
    ITEM TABVTABSTP B(04,07,01);     # TABS TO TAB STOP # 
    ITEM TABVTSCLRS B(04,08,01);     # SIZE CHANGE CLEARS SCREEN #
    ITEM TABAUTOTAB B(04,09,01);     # TERMINAL HAS AUTOMATIC TABBING # 
    ITEM TABTYPHEAD B(04,10,01);     # TYPE AHEAD ENABLED # 
    ITEM TABLOCKMDE B(04,11,01);     # BLOCK MODE TERMINAL #
    ITEM TABPTDWFLN B(04,12,01);     # PROT TABS DO NOT WRAP FWD LINE # 
    ITEM TABPTDWFPG B(04,13,01);     # PROT TABS DO NOT WRAP FWD PAGE # 
    ITEM TABPTDWBLN B(04,14,01);     # PROT TABS DO NOT WRAP BKW LINE # 
    ITEM TABPTDWBPG B(04,15,01);     # PROT TABS DO NOT WRAP BKW PAGE # 
    ITEM TABUNDWFLN B(04,16,01);     # UNPROT TABS DO NOT WRAP FWD LN # 
    ITEM TABUNDWFPG B(04,17,01);     # UNPROT TABS DO NOT WRAP FWD PG # 
    ITEM TABUNDWBLN B(04,18,01);     # UNPROT TABS DO NOT WRAP BKW LN # 
    ITEM TABUNDWBPG B(04,19,01);     # UNPROT TABS DO NOT WRAP BKW PG # 
    ITEM TABATTRCHR B(04,20,01);     # ATTRIBUTE CHARACTER NEEDS BYTE # 
    ITEM TABATTRSET B(04,21,01);     # RESET ATTRIBUTES BEFORE VDTPOS # 
    ITEM TABSNDSPLR B(04,22,01);     # SEND DISPLAY REWRITE FOR SFORM # 
    ITEM TABSNDSPLH B(04,23,01);     # SEND DISPLAY ON HELP FOR SFORM # 
    ITEM TABNOTMASK B(04,24,01);     # ATTRIBUTES ARE NOT MASKABLE    # 
    ITEM TABNOTCHAR B(04,25,01);     # ATTRIBUTES ARE LINE/PAGE BASED # 
    ITEM TABNOVDTEO B(04,26,01);     # DISABLE OUTPUT END (ERR. EXIT) # 
    ITEM TABPROCLRS B(04,27,01);     # PROTECT ALL CLEARS THE SCREEN  # 
    ITEM TABCLEARSM B(04,28,01);     # CLEARS ACROSS PROTECTED FIELDS # 
    ITEM TABRSBIT29 B(04,29,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT30 B(04,30,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT31 B(04,31,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT32 B(04,32,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT33 B(04,33,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT34 B(04,34,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT35 B(04,35,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABRSBIT36 B(04,36,01);     # RESERVED FOR CDC (FUTURE CODE) # 
    ITEM TABINSTL01 B(04,37,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL02 B(04,38,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL03 B(04,39,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL04 B(04,40,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL05 B(04,41,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL06 B(04,42,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL07 B(04,43,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL08 B(04,44,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL09 B(04,45,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL10 B(04,46,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL11 B(04,47,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL12 B(04,48,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL13 B(04,49,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL14 B(04,50,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL15 B(04,51,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL16 B(04,52,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL17 B(04,53,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL18 B(04,54,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL19 B(04,55,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABINSTL20 B(04,56,01);     # RESERVED FOR INSTALLATION CODE # 
    ITEM TABVTFKLSM U(04,57,03);     # FUNCTION KEY MARK COUNT #
    ITEM TABHEADSIX U(05,00,60);     # WORD SIX # 
    ITEM TABXMAXONE U(05,00,08);     # X MAX, SCREEN SIZE ONE # 
    ITEM TABYMAXONE U(05,08,07);     # Y MAX, SCREEN SIZE ONE # 
    ITEM TABXMAXTWO U(05,15,08);     # X MAX, SCREEN SIZE TWO # 
    ITEM TABYMAXTWO U(05,23,07);     # Y MAX, SCREEN SIZE TWO # 
    ITEM TABXMAXTHR U(05,30,08);     # X MAX, SCREEN SIZE THREE # 
    ITEM TABYMAXTHR U(05,38,07);     # Y MAX, SCREEN SIZE THREE # 
    ITEM TABXMAXFOR U(05,45,08);     # X MAX, SCREEN SIZE FOUR #
    ITEM TABYMAXFOR U(05,53,07);     # Y MAX, SCREEN SIZE FOUR #
    END 
  
  BASED ARRAY TABLEWORDS [0:O"271"] P(1);  # *TDU* TABLE I/O INFO # 
    BEGIN                            # *TDU* TABLE I/O INFORMATION #
    ITEM TABFULLWRD U(00,00,60);     # TABLE WORD # 
    END 
  
  
  BASED ARRAY SPLITCONTROL [1:2] P(SPLTCTLSIZ);  # SPLIT SCREEN # 
    BEGIN # ARRAY SPLITCONTROL #
    ITEM TITLEROW   I(00,00,60);     # WHERE TITLES ARE # 
    ITEM NUMROWS    I(01,00,60);     # NUMBER OF DATA ROWS IN SPLIT # 
    ITEM SPLITFILE  I(02,00,60);     # FILE DISPLAYED IN SPLIT #
    ITEM XSHIFT     I(03,00,60);     # DISPLAY COLUMN OFFSET #
    ITEM LASTNAME   C(04,00,07);     # LAST DISPLAYED FILE NAME # 
    END # ARRAY SPLITCONTROL #
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY ROWCONTROL [0:MAXROWS] P(2);
   BEGIN
    ITEM ROWPAINT B(0);            # WHETHER TO REDISPLAY THIS ROW     #
    ITEM ROWBITS  U(1,0,6);        # INCLUDES ALL FLAGS                #
      ITEM ROWCOLUM B(1,1,1);      # LIST COLUMN NUMBERS HERE          #
      ITEM ROWPMARK B(1,2,1);        # WHETHER WITHIN ACTIVE MARKS #
      ITEM ROWPHALF B(1,3,1);        # TO PARTIALLY UPDATE TITLE #
    # END OF BITS INCLUDED UNDER ROWBITS #
    ITEM ROWSPLIT U(1,6,3);        # SPLIT THIS ROW IS IN              #
    ITEM ROWTYPE  U(1,9,6);        # TYPES ARE ROWST VALUES         # 
                                   # DEFINED IFF TEXT, EMPTY OR TITLE  #
    ITEM ROWORIG  I(1,18,12);      # ORIGINAL ROW BEFORE SHUFFLES      #
    ITEM ROWLNPTR U(1,30,30);      # LINE POINTER FOR GLOBAL SEARCH    #
   END
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY BACKSTACK [0:BACKMAX];  # STACK OF PREVIOUS SCREENS # 
   BEGIN
    ITEM BACKFIL1   U (00,00,18);    # FDLF(1) #
    ITEM BACKFIL2   U (00,18,18);    # FDLF(2) #
    ITEM BACKSPL1   U (00,36,06);    # SPLIT FILE 1 # 
    ITEM BACKSPL2   U (00,42,06);    # SPLIT FILE 2 # 
    ITEM BACKSPLN   U (00,48,12);    # SPLIT SIZE # 
   END
  
  BASED ARRAY BACKSTORE [0:TEMPIND] P(2);  # SAVED POSITION STORAGE # 
    BEGIN 
    ITEM BKFDLFF1   U (00,00,18);    # FDLF(1) #
    ITEM BKFDLFF2   U (00,18,18);    # FDLF(2) #
    ITEM BKSPLIT2   U (00,36,06);    # SPLIT FILE 2 # 
    ITEM BKNROWS1   U (00,42,12);    # SPLIT SIZE 1 # 
    ITEM BKWHCHSP   U (00,54,06);    # WHICH SPLIT (0 = TOP) #
    ITEM BKNROWS2   U (01,00,12);    # SPLIT SIZE 2 # 
    ITEM BKCURSOR   U (01,12,12);    # CURSOR POSITION #
    END 
  
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY FKEYDEFS [-POSFKEYS:POSFKEYS];
   BEGIN
    ITEM FKEYNAME   C (00,00,10); 
   END
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY AUDITSTAGE[0:AUDITSIZE]; ITEM AUDITWORD;
  
  
  # LOCATE AND CHANGE STRING BUFFERS HOLD 80 CHARS PLUS EOL # 
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY LOCSTRING1 [0:STRWIDM1]; ITEM LOCSTR1;
  BASED ARRAY LOCSTRING2 [0:STRWIDM1]; ITEM LOCSTR2;
  BASED ARRAY CHGSTRING1 [0:STRWIDM1]; ITEM CHGSTR1;
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY FKEYSTRINGS[-POSFKEYS:POSFKEYS] S(2); 
    BEGIN 
    ITEM FKEYSTRING U(0); 
    END 
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  BASED ARRAY FKEYNUMB[1:POSFKEYS]; 
    BEGIN 
    ITEM FKEYNUMS U;
    END 
  
  # MUST MATCH CORRESPONDING SINGLE-USER ARRAY #
  
  BASED ARRAY TITLE1LIN [0:TTLLNLEN];  # TITLE LINE ONE ARRAY # 
    BEGIN # ARRAY TITLE1LIN # 
    ITEM TITLE1LINE I;               # TITLE LINE ONE # 
    END # ARRAY TITLE1LIN # 
  
  BASED ARRAY TITLE2LIN [0:TTLLNLEN];  # TITLE LINE TWO ARRAY # 
    BEGIN # ARRAY TITLE2LIN # 
    ITEM TITLE2LINE I;               # TITLE LINE TWO # 
    END # ARRAY TITLE2LIN # 
  
  
  CONTROL FI; 
  
  
  ITEM DISPATEND;                    # END OF MOVED COMMON #
PAGE                                 # GLOBAL COMMON DATA # 
  
  
  ITEM WORKNAM C(7)="ZZZWORK";       # NAME OF WORK FILE #
  BASED ARRAY CORE; ITEM MEM; 
  
  
  # DATA WHICH CAN BE USED ONLY INSTANTLY # 
  
  ITEM SCNFDASCI, SCNFDCHNG,         # SCANFDL RESULTS #
       SCNFDCURF, SCNFDINIT,
       SCNFDLOCK, SCNFDNUMB,
       SCNFDSIZE, SCNNAMPTR;
  
  ARRAY PROTLIN[0:BUFWID]; ITEM PROTLINE; # BUFFER FOR PROTECTED FIELD #
  
  # STANDARD TTY PROMPTS PLUS CONTROL BYTES # 
  
  ITEM AQCCKWRD=AQCCKCON; 
  ITEM AQCKWRD=AQCKCON; 
  ITEM CKWRD=CKCON; 
  ITEM BCCKWRD=BCCKCON; 
  ITEM NULLWRD=NULLCON; 
  ITEM QCCKWRD=QCCKCON; 
  ITEM BLANKWRD=BLANKCON; 
  
  # OTHER USEFUL CONSTANT DATA #
  
  ITEM BUFWIDE=BUFWIDP1, BUFWIDE2=BUFWID2P1;
  
  
  # DATA UNIQUE TO SINGLE EDITOR #
  
  CONTROL IFEQ SINGLE,1;
    ITEM ORIGIN=-1; 
    ITEM SMALLFIELD B=FALSE;
    ITEM TRYRESUME B=FALSE; 
    ITEM FORMERASCII B=FALSE; 
    ITEM CTLCDCMD B=TRUE; 
    ITEM INTERACT B=FALSE;
    ITEM NULLINPUT B=FALSE; 
    ITEM TTYINPUT B=TRUE; 
    ITEM TTYOUTPUT B=TRUE;
    ITEM SINGLEONLY B=FALSE;
    ITEM INPTNAM C(7)="INPUT  ";         # NAME INPUT FILE   #
    ITEM OUTPNAM C(7)="OUTPUT ";         # NAME OUTPUT FILE  #
    ITEM OLDPROCREC C(7); 
    ITEM OLDPROCFIL C(7); 
    ARRAY PARMLIN [0:BUFWID]; ITEM PARMLINE=[BUFWIDP1(-1)]; 
    ITEM PARMPTR; 
    ITEM ONWAYINBLK=0;
    ITEM NUMMODE=0; 
    ITEM STARTNUM=100;
    ARRAY TSTATAREA(2); 
     BEGIN
      ITEM TSTATUSTN   U(0,48,12);
      ITEM CURRENTASC  B(1,57,1); 
      ITEM INITASCII   B(1,58,1); 
     END
    ARRAY DEFIONAMES (3);    # DEFAULT I/O NAMES #
     BEGIN
      ITEM DEFINPNAM  C(0,0,7); 
      ITEM DEFINPCHAR C(0,0,5)=["INPUT"]; 
      ITEM DEFINPBIN  U(0,30,12)=[0]; 
      ITEM DEFOUTNAM  C(1,0,7); 
      ITEM DEFOUTCHAR C(1,0,6)=["OUTPUT"];
      ITEM DEFOUTBIN  U(1,36,6)=[0];
      ITEM NULLNAM    C(2,0,7); 
      ITEM NULLCHARXX C(2,0,1)=["0"]; 
      ITEM NULLBINXX  U(2,6,36)=[0];
     END
    ARRAY UTILBUF(MINIBUFSIZ);; 
    BASED ARRAY FILEBUF;; 
    ARRAY UTILFET (9);
     BEGIN
      ITEM UTILFETAT     U(0,42,8); 
      ITEM UTILFETEP     B(1,15,1); 
      ITEM UTILFETL      U(1,36,6); 
      ITEM UTILFETWORD7  (7); 
      ITEM UTILFETWORD8  (8); 
      ITEM UTILFETSR     U(8,42,6); 
      ITEM UTILFETMODE   U(8,54,6); 
     END
    ARRAY FILEFET(FETSIZ);
     BEGIN
      ITEM FILECODE U(0,50,10); 
      ITEM FILEEP   B(1,15,1);
      ITEM FILEIN   U(2,42,18); 
      ITEM FILEOUT  U(3,42,18); 
     END
    ITEM PFMERROR=0;
    ITEM PFMMSG C(40)=" $"; 
    ITEM PFMMS2 C(40)=" $"; 
    ARRAY PFMFET(10); 
     BEGIN
      ITEM PFMFETAT    U(0,42,8); 
      ITEM PFMFETEP    B(1,15,1); 
      ITEM PFMFETL     U(1,36,6); 
      ITEM PFMFETWD8   I(8);
      ITEM PFMFETPFN   C(8,0,7);
      ITEM PFMFETCT    U(8,48,6); 
      ITEM PFMFETM     U(8,54,6); 
      ITEM PFMFETWD9   I(9);
      ITEM PFMFETOAUN  C(9,0,7);
     END
    ARRAY MOVEFET(FETSIZ); ITEM MOVEFETIN U(2,42,18); 
    ARRAY FILINFPARMS (5);
     BEGIN
      ITEM FILINFNAME C(0,0,7); 
      ITEM FILINFLENC U(0,42,18)=[O"050001"]; 
      ITEM FILINFSTAT U(1,12,42); 
      ITEM FILINFTTY  B(1,43,1);
      ITEM FILINFRMS  B(1,44,1);
      ITEM FILINFWRIT B(1,52,1);
      ITEM FILINFREAD B(1,53,1);
      ITEM FILINFFT   U(1,54,6);
     END
  
  
    #   ARRAYS USED FOR WORKIO PATH AND BUFFER   #
  
    ARRAY SNGLFET (FETSIZ);;
    ARRAY SNGLOBF (OBFSIZE);; 
    ARRAY SNGLLST (LSTSIZE);; 
    ARRAY SNGLPRU (BUFSIZE);; 
  
  
              #   T T F   STORAGE   # 
  
    ARRAY TTYIBF (TTYIBUFSIZ);;        # FILE BUFFER       #
    ARRAY TTYI (FETSIZ);                     # INPUT FET              # 
     BEGIN
      ITEM TTYICD  U(0,50,10);  # FET CODE                # 
      ITEM TTYIIN  U(2,42,18);
      ITEM TTYIOT  U(3,42,18);
     END
  
    ARRAY TTYOBF (TTYOBUFSIZ);;        # *OUTPUT* BUFFER   #
    ARRAY TTYO (FETSIZ);                     # OUTPUT FET             # 
     ITEM TTYONM  U(0,0,42),                 # FILE NAME              # 
          TTYOFB  B(1,23,1),                 # FLUSH BIT FOR NOS 460  # 
          TTYOFT  U(1,42,18), 
          TTYOIN  U(2,42,18), 
          TTYOOT  U(3,42,18), 
          TTYOLM  U(4,42,18); 
  
     ITEM LISTFETPTR=0; 
     ARRAY FETLIST (3); 
      BEGIN 
       ITEM FETLIST0  (0) = [3];
       ITEM FETLSTNAM U(1,0,42) = [0];
       ITEM FETLSTLOC U(1,42,18) = [0]; 
       ITEM FETLIST2  (2) = [0];
      END 
  
  CONTROL FI; 
  
 END                         # OF COMMON COMFDAT  # 
                                               CONTROL LIST;
