User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:fsesubs

Deck FSESUBS

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.fsesubs +++|PROC FSESUBS;
00002  M00S00002.fsesubs +++|  BEGIN
00003  M00S00003.fsesubs +++|
00004  M00S00004.fsesubs +++|
00005  M00S00005.fsesubs +++|#
00006  M00S00006.fsesubs +++|***       FSESUBS -- SUBROUTINES OF FULL SCREEN EDITOR.
00007  M00S00007.fsesubs +++|*
Line S00008 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00008  M01S00008.281l803 ---|*         COPYRIGHT CONTROL DATA CORPORATION, 1983.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00009  M01S00001.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00010  M00S00009.fsesubs +++|*
00011  M00S00010.fsesubs +++|*         FSESUBS PROVIDES SUBROUTINES WHICH ARE UNIVERSAL TO THE
00012  M00S00011.fsesubs +++|*         SINGLE AND MULTI-USER VERSIONS OF THE EDITOR, AND WHICH ARE
00013  M00S00012.fsesubs +++|*         ALSO REGARDED AS LIKELY TO BE UNIVERSAL TO ALL OVERLAYS IF
00014  M00S00013.fsesubs +++|*         THE SINGLE-USER EDITOR WERE TO BE CONVERTED INTO AN OVERLAY
00015  M00S00014.fsesubs +++|*         STRUCTURE.  FSESUBS SPECIFICALLY INCLUDES THE INTERFACES BY
00016  M00S00015.fsesubs +++|*         WHICH THE WORKFILE MANAGER IS CALLED, AND INTERFACES FOR
00017  M00S00016.fsesubs +++|*         MANAGEMENT OF THE AUDIT TRAIL AND OF INTERNAL FILE IMAGES.
00018  M00S00017.fsesubs +++|#
00019  M00S00018.fsesubs +++|
00020  M00S00019.fsesubs +++|  DEF LISTCON #0#;
00021  M00S00020.fsesubs +++|
00022  M00S00021.fsesubs +++|CONTROL EJECT;                         # UNIVERSAL DECLARES          #
00023  M00S00022.fsesubs +++|
00024  M00S00023.fsesubs +++|*IFCALL SINGLE,COMFSGL
00025  M00S00024.fsesubs +++|*IFCALL ONLY,COMFONL
00026  M00S00025.fsesubs +++|*IFCALL MULTI,COMFMLT
00027  M00S00026.fsesubs +++|*CALL COMFFSE
00028  M00S00027.fsesubs +++|
00029  M00S00028.fsesubs +++|                             # EXTERNAL REF'S AND DEF'S    #
00030  M00S00029.fsesubs +++|
00031  M00S00030.fsesubs +++|
00032  M00S00031.fsesubs +++|CONTROL IFEQ MULTI,1;
00033  M00S00032.fsesubs +++|  XREF ARRAY RENTSTK [1:MAXREENT];     # SUBROUTINE STACK  #
00034  M00S00033.fsesubs +++|    BEGIN
00035  M00S00034.fsesubs +++|    ITEM RSTK;
00036  M00S00035.fsesubs +++|    END
00037  M00S00036.fsesubs +++|  XREF ITEM RSTKPTR;
00038  M00S00037.fsesubs +++|CONTROL FI;
00039  M00S00038.fsesubs +++|
00040  M00S00039.fsesubs +++|XDEF ITEM LINSIZ=BUFWIDP1;   # MAX LINE SIZ IN WORDS       #
00041  M00S00040.fsesubs +++|
00042  M00S00041.fsesubs +++|XDEF
00043  M00S00042.fsesubs +++|  BEGIN
00044  M00S00043.fsesubs +++|*CALL COMFXSB
00045  M00S00044.fsesubs +++|  END
00046  M00S00045.fsesubs +++|
00047  M00S00046.fsesubs +++|XREF
00048  M00S00047.fsesubs +++|  BEGIN
00049  M00S00048.fsesubs +++|*CALL COMFXED
00050  M00S00049.fsesubs +++|*CALL COMFXSC
00051  M00S00050.fsesubs +++|*CALL COMFXTI
00052  M00S00051.fsesubs +++|*CALL COMFXFO
00053  M00S00052.fsesubs +++|*CALL COMFXVT
00054  M00S00053.fsesubs +++|*CALL COMFXWK
00055  M00S00054.fsesubs +++|  PROC ZEROWD;
00056  M00S00055.fsesubs +++|  PROC WRITER;
00057  M00S00056.fsesubs +++|  PROC ABORT;
00058  M00S00057.fsesubs +++|  PROC ENDRUN;
00059  M00S00058.fsesubs +++|  PROC FASTCAI;
00060  M00S00059.fsesubs +++|  PROC FASTCNI;
00061  M00S00060.fsesubs +++|  FUNC LENGTH;
00062  M00S00061.fsesubs +++|  PROC FASTCAO;
00063  M00S00062.fsesubs +++|  PROC FASTCNO;
00064  M00S00063.fsesubs +++|  PROC FASTRLC;
00065  M00S00064.fsesubs +++|  FUNC FASTLNB;
00066  M00S00065.fsesubs +++|  FUNC NOSWDSZ;
00067  M00S00066.fsesubs +++|  PROC MOVEWD;
00068  M00S00067.fsesubs +++|  FUNC LINESZ;
00069  M00S00068.fsesubs +++|  FUNC MOVELN;
00070  M00S00069.fsesubs +++|  CONTROL IFEQ MULTI,1;
00071  M00S00070.fsesubs +++|    LABEL QQSINGLE;
00072  M00S00071.fsesubs +++|    PROC VOLUNTEER;
00073  M00S00072.fsesubs +++|    PROC FATALTRAP;
00074  M00S00073.fsesubs +++|    PROC SMFRCL;
00075  M00S00074.fsesubs +++|    PROC SMFDLY;
00076  M00S00075.fsesubs +++|  CONTROL FI;
00077  M00S00076.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00078  M00S00077.fsesubs +++|*CALL COMFXFL
00079  M00S00078.fsesubs +++|    PROC MESSAGE;
00080  M00S00079.fsesubs +++|    PROC CSETA;
00081  M00S00080.fsesubs +++|    PROC CSETN;
00082  M00S00081.fsesubs +++|    PROC WRITEC;
00083  M00S00082.fsesubs +++|    PROC READC;
00084  M00S00083.fsesubs +++|    PROC EVICT;
00085  M00S00084.fsesubs +++|    PROC GETJN;
00086  M00S00085.fsesubs +++|    PROC RTIME;
00087  M00S00086.fsesubs +++|    PROC RETERN;
00088  M00S00087.fsesubs +++|  CONTROL FI;
00089  M00S00088.fsesubs +++|  END                          # OF XREF #
00090  M00S00089.fsesubs +++|
00091  M00S00090.fsesubs +++|                             # COMMON DATA AREAS #
00092  M00S00091.fsesubs +++|
00093  M00S00092.fsesubs +++|*CALL COMFDS1
00094  M00S00093.fsesubs +++|*CALL COMFVD2
00095  M00S00094.fsesubs +++|*CALL COMFDS2
00096  M00S00095.fsesubs +++|
00097  M00S00096.fsesubs +++|*CALL COMFTAB
00098  M00S00097.fsesubs +++|PAGE                         # MINOR UTILITY ROUTINES      #
00099  M00S00098.fsesubs +++|
00100  M00S00099.fsesubs +++|
00101  M00S00100.fsesubs +++|FUNC TRIMNAME(NAME) C(7);
00102  M00S00101.fsesubs +++|  BEGIN
00103  M00S00102.fsesubs +++|#
00104  M00S00103.fsesubs +++|**        TRIMNAME - CONVERT TRAILING BLANKS TO ZEROS.
00105  M00S00104.fsesubs +++|*
00106  M00S00105.fsesubs +++|*         ENTRY  (NAME) - LEFT-JUSTIFIED STRING UP TO SEVEN CHARS.
00107  M00S00106.fsesubs +++|*
00108  M00S00107.fsesubs +++|*         EXIT   (NAME) - CONVERTED.
00109  M00S00108.fsesubs +++|#
00110  M00S00109.fsesubs +++|  ITEM NAME C(7), TMP1, NEWNAME C(7);
00111  M00S00110.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
00112  M00S00111.fsesubs +++|    BEGIN
00113  M00S00112.fsesubs +++|    IF C<TMP1,1>NAME EQ " " THEN C<TMP1,1>NEWNAME=0;
00114  M00S00113.fsesubs +++|    ELSE C<TMP1,1>NEWNAME=C<TMP1,1>NAME;
00115  M00S00114.fsesubs +++|    END
00116  M00S00115.fsesubs +++|  TRIMNAME=NEWNAME;
00117  M00S00116.fsesubs +++|  END
00118  M00S00117.fsesubs +++|
00119  M00S00118.fsesubs +++|
00120  M00S00119.fsesubs +++|FUNC PADNAME(NAME) C(7);
00121  M00S00120.fsesubs +++|  BEGIN
00122  M00S00121.fsesubs +++|#
00123  M00S00122.fsesubs +++|**        PADNAME - CONVERT TRAILING ZEROS TO BLANKS.
00124  M00S00123.fsesubs +++|*
00125  M00S00124.fsesubs +++|*         ENTRY  (NAME) - LEFT-JUSTIFIED STRING UP TO SEVEN CHARS.
00126  M00S00125.fsesubs +++|*
00127  M00S00126.fsesubs +++|*         EXIT   (NAME) - CONVERTED.
00128  M00S00127.fsesubs +++|#
00129  M00S00128.fsesubs +++|  ITEM NAME C(7), TMP1, NEWNAME C(7);
00130  M00S00129.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
00131  M00S00130.fsesubs +++|    BEGIN
00132  M00S00131.fsesubs +++|    IF C<TMP1,1>NAME EQ 0 THEN C<TMP1,1>NEWNAME=" ";
00133  M00S00132.fsesubs +++|    ELSE C<TMP1,1>NEWNAME=C<TMP1,1>NAME;
00134  M00S00133.fsesubs +++|    END
00135  M00S00134.fsesubs +++|  PADNAME=NEWNAME;
00136  M00S00135.fsesubs +++|  END
00137  M00S00136.fsesubs +++|
00138  M00S00137.fsesubs +++|
00139  M00S00138.fsesubs +++|FUNC MIN(A1,A2);
00140  M00S00139.fsesubs +++|  BEGIN
00141  M00S00140.fsesubs +++|#
00142  M00S00141.fsesubs +++|**        MIN - COMPUTE LESSER OF TWO VALUES.
00143  M00S00142.fsesubs +++|*
00144  M00S00143.fsesubs +++|*         ENTRY  (A1) AND (A2) - VALUES TO CHOOSE.
00145  M00S00144.fsesubs +++|*
00146  M00S00145.fsesubs +++|*         EXIT   (MIN) - LESSER INTEGER VALUE.
00147  M00S00146.fsesubs +++|#
00148  M00S00147.fsesubs +++|  ITEM A1,A2;
00149  M00S00148.fsesubs +++|  IF A1 LQ A2 THEN MIN = A1;
00150  M00S00149.fsesubs +++|  ELSE MIN = A2;
00151  M00S00150.fsesubs +++|  END
00152  M00S00151.fsesubs +++|
00153  M00S00152.fsesubs +++|FUNC MAX(A1,A2);
00154  M00S00153.fsesubs +++|  BEGIN
00155  M00S00154.fsesubs +++|#
00156  M00S00155.fsesubs +++|**        MAX - COMPUTE GREATER OF TWO VALUES.
00157  M00S00156.fsesubs +++|*
00158  M00S00157.fsesubs +++|*         ENTRY  (A1) AND (A2) - VALUES TO CHOOSE.
00159  M00S00158.fsesubs +++|*
00160  M00S00159.fsesubs +++|*         EXIT   (MAX) - GREATER INTEGER VALUE.
00161  M00S00160.fsesubs +++|#
00162  M00S00161.fsesubs +++|  ITEM A1,A2;
00163  M00S00162.fsesubs +++|  IF A1 GQ A2 THEN MAX = A1;
00164  M00S00163.fsesubs +++|  ELSE MAX = A2;
00165  M00S00164.fsesubs +++|  END
00166  M00S00165.fsesubs +++|
00167  M00S00166.fsesubs +++|
00168  M00S00167.fsesubs +++|PROC PUSHTEMP;
00169  M00S00168.fsesubs +++|  BEGIN
00170  M00S00169.fsesubs +++|#
00171  M00S00170.fsesubs +++|**        PUSHTEMP - PRESERVE VALUE ON MISCELLANEOUS STACK.
00172  M00S00171.fsesubs +++|*
00173  M00S00172.fsesubs +++|*         ENTRY  (TEMP) - VALUE TO BE PRESERVED.
00174  M00S00173.fsesubs +++|*
00175  M00S00174.fsesubs +++|*         EXIT   DATA STACK IS PUSHED.
00176  M00S00175.fsesubs +++|*
00177  M00S00176.fsesubs +++|*         USES   DATAPTR, DATASTK.
00178  M00S00177.fsesubs +++|#
00179  M00S00178.fsesubs +++|  IF DATAPTR GQ MAXDATA THEN
00180  M00S00179.fsesubs +++|    BEGIN
00181  M00S00180.fsesubs +++|    FATAL(" REENTRANT DATA STACK OVERFLOWED.$");
00182  M00S00181.fsesubs +++|    END
00183  M00S00182.fsesubs +++|  DATAPTR=DATAPTR+1;
00184  M00S00183.fsesubs +++|  DATASTK[DATAPTR]=TEMP;
00185  M00S00184.fsesubs +++|  END                          # OF PUSHTEMP       #
00186  M00S00185.fsesubs +++|
00187  M00S00186.fsesubs +++|PROC POPTEMP;
00188  M00S00187.fsesubs +++|  BEGIN
00189  M00S00188.fsesubs +++|#
00190  M00S00189.fsesubs +++|**        POPTEMP - RETREIVE VALUE FROM MISCELLANEOUS STACK.
00191  M00S00190.fsesubs +++|*
00192  M00S00191.fsesubs +++|*         ENTRY  DATA STACK ASSUMED TO HAVE DATA.
00193  M00S00192.fsesubs +++|*
00194  M00S00193.fsesubs +++|*         EXIT   (TEMP) - RETRIEVED VALUE.
00195  M00S00194.fsesubs +++|*
00196  M00S00195.fsesubs +++|*         USES   DATAPTR, DATASTK
00197  M00S00196.fsesubs +++|#
00198  M00S00197.fsesubs +++|  IF DATAPTR LS 0 THEN FATAL(" REENTRANT DATA STACK UNDERFLOWED.$");
00199  M00S00198.fsesubs +++|  TEMP=DATASTK[DATAPTR];
00200  M00S00199.fsesubs +++|  DATAPTR=DATAPTR-1;
00201  M00S00200.fsesubs +++|  END                          # OF POPTEMP        #
00202  M00S00201.fsesubs +++|
00203  M00S00202.fsesubs +++|
00204  M00S00203.fsesubs +++|PROC STARTCMD;
00205  M00S00204.fsesubs +++|  BEGIN
00206  M00S00205.fsesubs +++|#
00207  M00S00206.fsesubs +++|**        STARTCMD - INITIALIZE SYNTAX SCANNER FOR NEW COMMANDS.
00208  M00S00207.fsesubs +++|*
00209  M00S00208.fsesubs +++|*         ENTRY  (CMDLINE) ALREADY FILLED IN WITH NEW STRING.
00210  M00S00209.fsesubs +++|*
00211  M00S00210.fsesubs +++|*         EXIT   (CMDLINE) TRIMMED.
00212  M00S00211.fsesubs +++|*                SCANPOS, TOKENPOS, CMDMARKER, KEYWDTYPE INITIALIZED.
00213  M00S00212.fsesubs +++|*                EXPANDAT INITIALIZED.
00214  M00S00213.fsesubs +++|#
00215  M00S00214.fsesubs +++|  TRIM(CMDLIN,0);
00216  M00S00215.fsesubs +++|  SCANPOS=0;
00217  M00S00216.fsesubs +++|  TOKENPOS=0;
00218  M00S00217.fsesubs +++|  CMDMARKER=0;
00219  M00S00218.fsesubs +++|  KEYWDTYPE=1;
00220  M00S00219.fsesubs +++|  EXPANDAT=-1;
00221  M00S00220.fsesubs +++|  END                          # OF STARTCMD       #
00222  M00S00221.fsesubs +++|
00223  M00S00222.fsesubs +++|
00224  M00S00223.fsesubs +++|FUNC TABFN(TABNUM);
00225  M00S00224.fsesubs +++|  BEGIN
00226  M00S00225.fsesubs +++|#
00227  M00S00226.fsesubs +++|**        TABFN - COMPUTE TAB COLUMN BY ORDINAL.
00228  M00S00227.fsesubs +++|*
00229  M00S00228.fsesubs +++|*         ENTRY  (TABNUM) INTEGER ORDINAL OF TAB STOP.
00230  M00S00229.fsesubs +++|*
00231  M00S00230.fsesubs +++|*         EXIT   (TABFN) COLUMN OFFSET.
00232  M00S00231.fsesubs +++|#
00233  M00S00232.fsesubs +++|  ITEM TABNUM;
Line S00233 Modification History
M01 (Removed by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00234  M01S00233.ns2129  ---|  IF TABNUM LS 1 OR TABNUM GR 14 THEN TABFN=0;
00235  M01S00234.ns2129  ---|  ELSE IF TABNUM LQ 7 THEN TABFN=B<TABNUM*8-8,8>TABS1;
00236  M01S00235.ns2129  ---|  ELSE TABFN=B<TABNUM*8-64,8>TABS2;
Line S00001 Modification History
M01 (Added by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00237  M01S00001.ns2129  +++|  ITEM TMP1, TMP2;
00238  M01S00002.ns2129  +++|  IF TABNUM LS 1 OR TABNUM GR TABSTOPS THEN TABFN=0;
00239  M01S00003.ns2129  +++|  ELSE
00240  M01S00004.ns2129  +++|    BEGIN
00241  M01S00005.ns2129  +++|    TMP2=TABNUM-1;
00242  M01S00006.ns2129  +++|    TMP1=TMP2/7;
00243  M01S00007.ns2129  +++|    TMP2=MOD(TMP2,7);
00244  M01S00008.ns2129  +++|    TABFN=B<TMP2*8,8>TABVCTWRD[TMP1+1];
00245  M01S00009.ns2129  +++|    END
00246  M00S00236.fsesubs +++|  END                          # OF TABFN          #
00247  M00S00237.fsesubs +++|
00248  M00S00238.fsesubs +++|
00249  M00S00239.fsesubs +++|PROC COPYTABS;
00250  M00S00240.fsesubs +++|  IOBEGIN(COPYTABS)
00251  M00S00241.fsesubs +++|#
00252  M00S00242.fsesubs +++|**        COPYTABS - COPY/CONVERT TABS, TABVECTOR->VIRTERM.
00253  M00S00243.fsesubs +++|*
00254  M00S00244.fsesubs +++|*         ENTRY  TABVECTOR ALREADY SET UP.
00255  M00S00245.fsesubs +++|*
00256  M00S00246.fsesubs +++|*         EXIT   TERMINAL CONFIGURED, VIRTERM DITTO.
00257  M00S00247.fsesubs +++|*
00258  M00S00248.fsesubs +++|*         CALLS  VDTCTS, VDTSTS.
00259  M00S00249.fsesubs +++|*
00260  M00S00250.fsesubs +++|*         USES   LINCTR, LINNUM1.
00261  M00S00251.fsesubs +++|#
00262  M00S00252.fsesubs +++|  VDTCTS;                    # CLEAR OLD TABS    #
00263  M00S00253.fsesubs +++|  VDTSTS(0);                 # ALWAYS  #
Line S00254 Modification History
M01 (Removed by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00264  M01S00254.ns2129  ---|  IF TABS1 EQ 0 THEN IORET
Line S00010 Modification History
M01 (Added by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00265  M01S00010.ns2129  +++|  IF TABVCTWRD[1] EQ 0 THEN IORET
00266  M00S00255.fsesubs +++|  VDTSTS(TABFN(1));
Line S00256 Modification History
M01 (Removed by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00267  M01S00256.ns2129  ---|  FOR LINCTR=2 STEP 1 UNTIL 14 DO
Line S00011 Modification History
M01 (Added by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00268  M01S00011.ns2129  +++|  FOR LINCTR=2 STEP 1 UNTIL TABSTOPS DO
00269  M00S00257.fsesubs +++|    BEGIN
00270  M00S00258.fsesubs +++|    LINNUM1=TABFN(LINCTR);
00271  M00S00259.fsesubs +++|    IF LINNUM1 NQ 0 THEN
00272  M00S00260.fsesubs +++|      BEGIN
00273  M00S00261.fsesubs +++|      VDTSTS(LINNUM1);
00274  M00S00262.fsesubs +++|      END
00275  M00S00263.fsesubs +++|    ELSE IORET
00276  M00S00264.fsesubs +++|    END
00277  M00S00265.fsesubs +++|
00278  M00S00266.fsesubs +++|  IOEND  # COPYTABS #
00279  M00S00267.fsesubs +++|
00280  M00S00268.fsesubs +++|
00281  M00S00269.fsesubs +++|PROC MAKEFET(AFET,NAME,BUFFER,LENGTH);
00282  M00S00270.fsesubs +++|  BEGIN
00283  M00S00271.fsesubs +++|#
00284  M00S00272.fsesubs +++|**        MAKEFET - INITIALIZE A FET.
00285  M00S00273.fsesubs +++|*
00286  M00S00274.fsesubs +++|*         ENTRY  AFET - FET TO BE INITIALIZED.
00287  M00S00275.fsesubs +++|*                NAME - NAME OF FILE.
00288  M00S00276.fsesubs +++|*                BUFFER - THE CIRCULAR BUFFER.
00289  M00S00277.fsesubs +++|*                LENGTH - LENGTH OF CIRCULAR BUFFER.
00290  M00S00278.fsesubs +++|*
00291  M00S00279.fsesubs +++|*         NOTE   USES THEN RESTORES BASE ADDRESS FOR "FET" ARRAY.
00292  M00S00280.fsesubs +++|#
00293  M00S00281.fsesubs +++|  ARRAY AFET;;
00294  M00S00282.fsesubs +++|  ITEM NAME C(7);
00295  M00S00283.fsesubs +++|  ARRAY BUFFER;;
00296  M00S00284.fsesubs +++|  ITEM LENGTH;
00297  M00S00285.fsesubs +++|  ITEM TMP,TMP2, NEWNAME C(7);
00298  M00S00286.fsesubs +++|
00299  M00S00287.fsesubs +++|  ZEROWD(AFET,FETSIZ);
00300  M00S00288.fsesubs +++|  TMP=LOC(FET);
00301  M00S00289.fsesubs +++|  P<FET>=LOC(AFET);
00302  M00S00290.fsesubs +++|  NEWNAME=TRIMNAME(NAME);
00303  M00S00291.fsesubs +++|  FETNAM=NEWNAME;
00304  M00S00292.fsesubs +++|  FETFIR=LOC(BUFFER);
00305  M00S00293.fsesubs +++|  FETIN=FETFIR;
00306  M00S00294.fsesubs +++|  FETOUT=FETFIR;
00307  M00S00295.fsesubs +++|  FETLIM=FETFIR+LENGTH;
00308  M00S00296.fsesubs +++|  IF TRIMNAME(NAME) NQ 0 THEN
00309  M00S00297.fsesubs +++|   BEGIN
00310  M00S00298.fsesubs +++|    FETCOD=1;
00311  M00S00299.fsesubs +++|    FETL=2;
00312  M00S00300.fsesubs +++|   END
00313  M00S00301.fsesubs +++|  P<FET>=TMP;
00314  M00S00302.fsesubs +++|
00315  M00S00303.fsesubs +++|  END                          # OF MAKEFET        #
00316  M00S00304.fsesubs +++|
00317  M00S00305.fsesubs +++|
00318  M00S00306.fsesubs +++|PROC TTLFN(PARM);
00319  M00S00307.fsesubs +++|  IOBEGIN(TTLFN)
00320  M00S00308.fsesubs +++|#
00321  M00S00309.fsesubs +++|**        TTLFN - PRINT OUT A ZERO-TERMINATED NAME.
00322  M00S00310.fsesubs +++|*
00323  M00S00311.fsesubs +++|*         ENTRY  (PARM) - NAME TO BE PRINTED.
00324  M00S00312.fsesubs +++|*
00325  M00S00313.fsesubs +++|*         CALLS  TTST.
00326  M00S00314.fsesubs +++|#
00327  M00S00315.fsesubs +++|  ITEM TMP1;
00328  M00S00316.fsesubs +++|  ITEM PARM;
00329  M00S00317.fsesubs +++|  TMP1=0;
00330  M00S00318.fsesubs +++|  WHYLE C<TMP1,1>PARM NQ 0 AND TMP1 LQ 7 DO TMP1=TMP1+1;
00331  M00S00319.fsesubs +++|  TTST(PARM,TMP1);
Line S00001 Modification History
M01 (Added by) ns2346
Seq #  *Modification Id* Act 
----------------------------+
00332  M01S00001.ns2346  +++|  WHYLE TMP1 LQ 7 DO
00333  M01S00002.ns2346  +++|    BEGIN                            # WHILE NOT BLANK FILLED #
00334  M01S00003.ns2346  +++|    TMP1=TMP1+1;
00335  M01S00004.ns2346  +++|    TTSTR(" $");
00336  M01S00005.ns2346  +++|    END
00337  M00S00320.fsesubs +++|  IOEND                      # OF TTLFN          #
00338  M00S00321.fsesubs +++|
00339  M00S00322.fsesubs +++|
00340  M00S00323.fsesubs +++|CONTROL IFEQ SINGLE,1;
00341  M00S00324.fsesubs +++|
00342  M00S00325.fsesubs +++|  PROC SETCSET(WHICH);
00343  M00S00326.fsesubs +++|    BEGIN
00344  M00S00327.fsesubs +++|#
00345  M00S00328.fsesubs +++|**        SETCSET - ISSUE CSET MACRO.
00346  M00S00329.fsesubs +++|*
00347  M00S00330.fsesubs +++|*         ENTRY  (WHICH) - INDICATES ASCII OR NORMAL.
00348  M00S00331.fsesubs +++|*
00349  M00S00332.fsesubs +++|*         USES   ORIGIN.
00350  M00S00333.fsesubs +++|*
00351  M00S00334.fsesubs +++|*         CALLS  CSETA, CSETN.
00352  M00S00335.fsesubs +++|#
00353  M00S00336.fsesubs +++|    ITEM WHICH B;
00354  M00S00337.fsesubs +++|    IF ORIGIN EQ TXOT THEN
00355  M00S00338.fsesubs +++|      BEGIN
00356  M00S00339.fsesubs +++|      IF WHICH THEN CSETA;
00357  M00S00340.fsesubs +++|      ELSE CSETN;
00358  M00S00341.fsesubs +++|      END
00359  M00S00342.fsesubs +++|    END                       # OF SETCSET        #
00360  M00S00343.fsesubs +++|
00361  M00S00344.fsesubs +++|CONTROL FI;
00362  M00S00345.fsesubs +++|PAGE                         # ABORT ROUTINES    #
00363  M00S00346.fsesubs +++|
00364  M00S00347.fsesubs +++|
00365  M00S00348.fsesubs +++|PROC FATAL(STR);
00366  M00S00349.fsesubs +++|  IOBEGIN(FATAL)
00367  M00S00350.fsesubs +++|#
00368  M00S00351.fsesubs +++|**        FATAL - ABORT THE EDITOR WITH MESSAGE.
00369  M00S00352.fsesubs +++|*         MORTAL - SIMILAR FOR PROBLEMS WITHIN TERMINAL I/O.
00370  M00S00353.fsesubs +++|*
00371  M00S00354.fsesubs +++|*         FATAL IS THE PRINCIPAL ROUTINE TO ABORT AN EDIT SESSION
00372  M00S00355.fsesubs +++|*         FOR EITHER AN INTERNAL INCONSISTENCY OR A USER ERROR SO
00373  M00S00356.fsesubs +++|*         SEVERE THAT NO MEANINGFUL FUNCTION CAN BE SALVAGED.  TO
00374  M00S00357.fsesubs +++|*         PREVENT CIRCULAR (RECURSIVE) SUBROUTINE LINKAGES, THE
00375  M00S00358.fsesubs +++|*         WORKIO MODULE IS RESTRICTED TO INTERFACE VIA THE TRAGIC
00376  M00S00359.fsesubs +++|*         ROUTINE AND THE TERMIO MODULE IS RESTRICTED TO USE THE
00377  M00S00360.fsesubs +++|*         MORTAL ENTRY POINT.
00378  M00S00361.fsesubs +++|*
00379  M00S00362.fsesubs +++|*         ENTRY  STR - THE ABORT MESSAGE.
00380  M00S00363.fsesubs +++|*
00381  M00S00364.fsesubs +++|*         EXIT   TO ABORT ROUTINE, WITH WORKFILE EVICTED.
00382  M00S00365.fsesubs +++|*
00383  M00S00366.fsesubs +++|*         USES   LINPTR1, P<FROM>.
00384  M00S00367.fsesubs +++|*
00385  M00S00368.fsesubs +++|*         CALLS  TTSTR, TTLIN, MESSAGE, TTSYNC, VDTCLO, EVICT,
00386  M00S00369.fsesubs +++|*                CHECKIO, FATALTRAP.
00387  M00S00370.fsesubs +++|#
00388  M00S00371.fsesubs +++|  ITEM STR C(40);
00389  M00S00372.fsesubs +++|  ERRSTRING=STR;             # HANDLE PARM REENTRANTLY     #
Line S00373 Modification History
M01 (Removed by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00390  M01S00373.v23l617 ---|  IF SCREENMODE THEN CLEARSCREEN;
Line S00001 Modification History
M01 (Added by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00391  M01S00001.v23l617 +++|  CONTROL IFEQ SINGLE,1;
00392  M01S00002.v23l617 +++|    IF SCREENMODE THEN CLEARSCREEN;
00393  M01S00003.v23l617 +++|  CONTROL FI;
Line S00374 Modification History
M01 (Removed by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00394  M01S00374.v23l617 ---|  TTLIN(" INTERNAL ERROR.$");
Line S00004 Modification History
M01 (Added by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00395  M01S00004.v23l617 +++|  TTLIN(" FSE INTERNAL ERROR.$");
00396  M00S00375.fsesubs +++|  TTLIN(ERRSTRING);
Line S00376 Modification History
M01 (Removed by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00397  M01S00376.v23l617 ---|  TTLIN(" CONTACT SITE ANALYST.$");
00398  M00S00377.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00399  M00S00378.fsesubs +++|    GOTO FATAL2;
00400  M00S00379.fsesubs +++|  CONTROL FI;
00401  M00S00380.fsesubs +++|
00402  M00S00381.fsesubs +++|ENTRY PROC MORTAL(STR);
00403  M00S00382.fsesubs +++|
00404  M00S00383.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00405  M00S00384.fsesubs +++|    ITEM MSGBUF C(40)=0;
00406  M00S00385.fsesubs +++|    ITEM TMP1;
00407  M00S00386.fsesubs +++|    ERRSTRING=STR;
00408  M00S00387.fsesubs +++|FATAL2:
00409  M00S00388.fsesubs +++|    FOR TMP1=0 STEP 1 UNTIL 37 DO
00410  M00S00389.fsesubs +++|      BEGIN
00411  M00S00390.fsesubs +++|      IF C<TMP1,1>STR NQ "$" THEN C<TMP1,1>MSGBUF=C<TMP1,1>STR;
00412  M00S00391.fsesubs +++|      ELSE TMP1=38;
00413  M00S00392.fsesubs +++|      END
00414  M00S00393.fsesubs +++|    MESSAGE(MSGBUF,3,1);
00415  M00S00394.fsesubs +++|    TTSYNC;
00416  M00S00395.fsesubs +++|    VDTCLO(0);
00417  M00S00396.fsesubs +++|    EVICT(FET,1);
00418  M00S00397.fsesubs +++|    ABORT;
00419  M00S00398.fsesubs +++|  CONTROL FI;
00420  M00S00399.fsesubs +++|  CONTROL IFEQ MULTI,1;
00421  M00S00400.fsesubs +++|    IF NOT ABORTED THEN
00422  M00S00401.fsesubs +++|      BEGIN
00423  M00S00402.fsesubs +++|      ABORTED=TRUE;
00424  M00S00403.fsesubs +++|      CHECKIO;
00425  M00S00404.fsesubs +++|      END
00426  M00S00405.fsesubs +++|    FATALTRAP;
00427  M00S00406.fsesubs +++|  CONTROL FI;
00428  M00S00407.fsesubs +++|  IOEND                        # OF FATAL          #
00429  M00S00408.fsesubs +++|
00430  M00S00409.fsesubs +++|
00431  M00S00410.fsesubs +++|PROC TRAGIC(STR);
00432  M00S00411.fsesubs +++|  IOBEGIN(TRAGIC)
00433  M00S00412.fsesubs +++|#
00434  M00S00413.fsesubs +++|**        TRAGIC - ABORT EDITOR DUE TO WORKFILE PROBLEM.
00435  M00S00414.fsesubs +++|*
00436  M00S00415.fsesubs +++|*         TRAGIC IS USED BY WORKIO FOR SELF-ABORT SITUATIONS. BY
00437  M00S00416.fsesubs +++|*         SETTING THE "ABORTED" FLAG, WE DIRECT "FATAL" TO IMMEDIATELY
00438  M00S00417.fsesubs +++|*         EVICT THE WORKFILE WITHOUT FURTHER WORKIO CALLS.
00439  M00S00418.fsesubs +++|*
00440  M00S00419.fsesubs +++|*         ENTRY  STR - ERROR MESSAGE.
00441  M00S00420.fsesubs +++|*
00442  M00S00421.fsesubs +++|*         EXIT   TO FATAL, WITH "ABORTED" SET.
00443  M00S00422.fsesubs +++|#
00444  M00S00423.fsesubs +++|  ITEM STR C(80);
00445  M00S00424.fsesubs +++|  ABORTED=TRUE;
00446  M00S00425.fsesubs +++|  FATAL(STR);
00447  M00S00426.fsesubs +++|  IOEND                        # OF TRAGIC         #
00448  M00S00427.fsesubs +++|PAGE                         # SUPPORT ROUTINES FOR INTERNAL CHARSET #
00449  M00S00428.fsesubs +++|
00450  M00S00429.fsesubs +++|
00451  M00S00430.fsesubs +++|PROC COPYLIN(LIN1,LIN2);
00452  M00S00431.fsesubs +++|  BEGIN
00453  M00S00432.fsesubs +++|#
00454  M00S00433.fsesubs +++|**        COPYLIN - COPY LINE IMAGE, INTERNAL CHARSET.
00455  M00S00434.fsesubs +++|*
00456  M00S00435.fsesubs +++|*         ENTRY  LIN1 IS SOURCE, LIN2 IS TARGET.
00457  M00S00436.fsesubs +++|#
00458  M00S00437.fsesubs +++|  ARRAY LIN1;;  ARRAY LIN2;;
00459  M00S00438.fsesubs +++|  DUMB=LINESZ(LIN1);         # FIX EOL BITS      #
00460  M00S00439.fsesubs +++|  DUMB=MOVELN(LIN1,LIN2);    # ACTUAL COPY       #
00461  M00S00440.fsesubs +++|  END                         # OF COPYLIN        #
00462  M00S00441.fsesubs +++|
00463  M00S00442.fsesubs +++|
00464  M00S00443.fsesubs +++|PROC EXTENDC(TEXTLIN,X);
00465  M00S00444.fsesubs +++|  BEGIN
00466  M00S00445.fsesubs +++|#
00467  M00S00446.fsesubs +++|**        EXTENDC - EXTEND INTERNAL LINE IMAGE TO DESIRED LENGTH.
00468  M00S00447.fsesubs +++|*
00469  M00S00448.fsesubs +++|*         ENTRY  TEXTLIN - TRIMMED LINE IMAGE.
00470  M00S00449.fsesubs +++|*                X - LENGTH TO BE PADDED TO.
00471  M00S00450.fsesubs +++|*
00472  M00S00451.fsesubs +++|*         MACROS SETCHAR.
00473  M00S00452.fsesubs +++|*
00474  M00S00453.fsesubs +++|*         CALLS  LENGTH.
00475  M00S00454.fsesubs +++|#
00476  M00S00455.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00477  M00S00456.fsesubs +++|  ITEM TMP1, TMP2, X;
00478  M00S00457.fsesubs +++|  IF X GQ LENGTH(TEXTLIN) THEN
00479  M00S00458.fsesubs +++|    BEGIN
00480  M00S00459.fsesubs +++|    TMP1=LENGTH(TEXTLIN);
00481  M00S00460.fsesubs +++|    FOR TMP2=TMP1 STEP 1 UNTIL X
00482  M00S00461.fsesubs +++|      DO SETCHAR(TEXTLINE,TMP2,CBLANK);
00483  M00S00462.fsesubs +++|    SETCHAR(TEXTLINE,X+1,CENDLINE);
00484  M00S00463.fsesubs +++|    END
00485  M00S00464.fsesubs +++|  END                         # OF EXTENDC       #
00486  M00S00465.fsesubs +++|
00487  M00S00466.fsesubs +++|
00488  M00S00467.fsesubs +++|PROC LSHIFT(TEXTLIN,X,N);
00489  M00S00468.fsesubs +++|  BEGIN
00490  M00S00469.fsesubs +++|#
00491  M00S00470.fsesubs +++|**        LSHIFT - SHIFT INTERNAL LINE IMAGE LEFT.
00492  M00S00471.fsesubs +++|*
00493  M00S00472.fsesubs +++|*         CHARACTER POSITION "X" GOES TO "X-N", X+1 TO X+1-N, ETC.
00494  M00S00473.fsesubs +++|*
00495  M00S00474.fsesubs +++|*         ENTRY  TEXTLIN - INTERNAL LINE IMAGE.
00496  M00S00475.fsesubs +++|*                X - FIRST SHIFTABLE POSITION.
00497  M00S00476.fsesubs +++|*                N - DISTANCE OF SHIFT.
00498  M00S00477.fsesubs +++|*
00499  M00S00478.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00500  M00S00479.fsesubs +++|*
00501  M00S00480.fsesubs +++|*         CALLS  LENGTH, EXTENDC.
00502  M00S00481.fsesubs +++|#
00503  M00S00482.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00504  M00S00483.fsesubs +++|  ITEM X,N,NN,I,L,C;
00505  M00S00484.fsesubs +++|  IF N NQ 0 THEN
00506  M00S00485.fsesubs +++|    BEGIN
00507  M00S00486.fsesubs +++|    EXTENDC(TEXTLIN,X-1);
00508  M00S00487.fsesubs +++|    L=LENGTH(TEXTLIN);
00509  M00S00488.fsesubs +++|    NN=N;
00510  M00S00489.fsesubs +++|    IF X LS N THEN NN=X;
00511  M00S00490.fsesubs +++|    FOR I=X STEP 1 UNTIL L DO
00512  M00S00491.fsesubs +++|      BEGIN
00513  M00S00492.fsesubs +++|      GETCHAR(TEXTLINE,I,C);
00514  M00S00493.fsesubs +++|      SETCHAR(TEXTLINE,I-NN,C);
00515  M00S00494.fsesubs +++|      END
00516  M00S00495.fsesubs +++|    END
00517  M00S00496.fsesubs +++|  END                       # OF LSHIFT         #
00518  M00S00497.fsesubs +++|
00519  M00S00498.fsesubs +++|
00520  M00S00499.fsesubs +++|PROC RSHIFT(TEXTLIN,X,N);
00521  M00S00500.fsesubs +++|  BEGIN
00522  M00S00501.fsesubs +++|  # RSHIFT - RIGHT SHIFT LINE (MOVE X TO X+N, X+1 TO X+1+N, ETC.)  #
00523  M00S00502.fsesubs +++|#
00524  M00S00503.fsesubs +++|**        RSHIFT - RIGHT SHIFT OF INTERNAL LINE IMAGE.
00525  M00S00504.fsesubs +++|*
00526  M00S00505.fsesubs +++|*         RSHIFT MOVES POSITION "X" TO "X+N", "X+1" TO "X+1+N", ETC.
00527  M00S00506.fsesubs +++|*
00528  M00S00507.fsesubs +++|*         ENTRY  SAME CONDITIONS AS LSHIFT ROUTINE.
00529  M00S00508.fsesubs +++|*
00530  M00S00509.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00531  M00S00510.fsesubs +++|*
00532  M00S00511.fsesubs +++|*         CALLS  EXTENDC, LENGTH.
00533  M00S00512.fsesubs +++|#
00534  M00S00513.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00535  M00S00514.fsesubs +++|  ITEM X,N,I,L,C;
00536  M00S00515.fsesubs +++|  IF N NQ 0 THEN
00537  M00S00516.fsesubs +++|    BEGIN
00538  M00S00517.fsesubs +++|    EXTENDC(TEXTLIN,X-1);
00539  M00S00518.fsesubs +++|    L=LENGTH(TEXTLIN);
00540  M00S00519.fsesubs +++|    EXTENDC(TEXTLIN,X+N);
00541  M00S00520.fsesubs +++|    IF L+N GR BUFCHAR THEN
00542  M00S00521.fsesubs +++|      BEGIN
00543  M00S00522.fsesubs +++|      L=BUFCHAR-N;
00544  M00S00523.fsesubs +++|      SETCHAR(TEXTLINE,L,CENDLINE);
00545  M00S00524.fsesubs +++|      END
00546  M00S00525.fsesubs +++|    FOR I=L STEP -1 UNTIL X DO
00547  M00S00526.fsesubs +++|      BEGIN
00548  M00S00527.fsesubs +++|      GETCHAR(TEXTLINE,I,C);
00549  M00S00528.fsesubs +++|      SETCHAR(TEXTLINE,I+N,C);
00550  M00S00529.fsesubs +++|      END
00551  M00S00530.fsesubs +++|    SETCHAR(TEXTLINE,L+N,CENDLINE);
00552  M00S00531.fsesubs +++|    END
00553  M00S00532.fsesubs +++|  END                       # OF RSHIFT #
00554  M00S00533.fsesubs +++|
00555  M00S00534.fsesubs +++|
00556  M00S00535.fsesubs +++|PROC CONVIN(TEXTLINE,CHARTYPE);
00557  M00S00536.fsesubs +++|  BEGIN
00558  M00S00537.fsesubs +++|#
00559  M00S00538.fsesubs +++|**        CONVIN - CONVERT INPUT LINE TO INTERNAL FORMAT.
00560  M00S00539.fsesubs +++|*
00561  M00S00540.fsesubs +++|*         ENTRY  TMPLIN - ALREADY CONTAINS NOS-FORMAT LINE IMAGE.
Line S00541 Modification History
M01 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00562  M01S00541.ns2582  ---|*                CHARTYPE - INDICATES CONVERSION ALGORITHM, 0=6-BIT,
00563  M01S00542.ns2582  ---|*                    1=6/12, 2=8/12.
Line S00001 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00564  M01S00001.ns2582  +++|*                CHARTYPE - CHARACTER SET CONVERSION MODE.
00565  M01S00002.ns2582  +++|*                           0 = 6 BIT DISPLAY,
00566  M01S00003.ns2582  +++|*                           1 = 6 BIT DISPLAY,
00567  M01S00004.ns2582  +++|*                           2 = 6/12 ASCII,
00568  M01S00005.ns2582  +++|*                           3 = 8/12 ASCII.
00569  M00S00543.fsesubs +++|*
00570  M00S00544.fsesubs +++|*         EXIT   TEXTLINE - CONTAINS INTERNAL FORMAT LINE IMAGE.
Line S00001 Modification History
M01 (Added by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00571  M01S00001.ns2225  +++|*                ZEROCOLIN - FORCED TRUE IF AND ONLY IF 6/12 AND
00572  M01S00002.ns2225  +++|*                    A 00 COLON IS ENCOUNTERED.  OTHERWISE UNCHANGED.
00573  M00S00545.fsesubs +++|*
00574  M00S00546.fsesubs +++|*         CALLS  FASTCNI, FASTCAI, SLOWC8I.
00575  M00S00547.fsesubs +++|#
00576  M00S00548.fsesubs +++|  ARRAY TEXTLINE[0:99]; ITEM TEXT;
00577  M00S00549.fsesubs +++|  ITEM CHARTYPE;
Line S00003 Modification History
M01 (Added by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00578  M01S00003.ns2225  +++|  ITEM TMP1;
00579  M00S00550.fsesubs +++|  SWITCH CONVINSW CINORM,CINORM,CIASC,CI812;
00580  M00S00551.fsesubs +++|
00581  M00S00552.fsesubs +++|  GOTO CONVINSW[CHARTYPE];
00582  M00S00553.fsesubs +++|
00583  M00S00554.fsesubs +++|CINORM:
00584  M00S00555.fsesubs +++|  FASTCNI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00585  M00S00556.fsesubs +++|  RETURN;
00586  M00S00557.fsesubs +++|
00587  M00S00558.fsesubs +++|CIASC:
Line S00559 Modification History
M01 (Removed by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00588  M01S00559.ns2225  ---|  FASTCAI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
Line S00004 Modification History
M01 (Added by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00589  M01S00004.ns2225  +++|  TMP1=0;
00590  M01S00005.ns2225  +++|  FASTCAI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,TMP1);
Line S00006 Modification History
M01 (Added by) ns2225
M02 (Removed by) ns2623
Seq #  *Modification Id* Act 
----------------------------+
00591  M02S00006.ns2623  ---|  IF TMP1 NQ 0 THEN ZEROCOLIN=TRUE;
Line S00001 Modification History
M01 (Added by) ns2623
Seq #  *Modification Id* Act 
----------------------------+
00592  M01S00001.ns2623  +++|  IF TMP1 LAN 1 NQ 0 THEN ZEROCOLIN = TRUE;
00593  M01S00002.ns2623  +++|  IF TMP1 LAN 2 NQ 0 THEN
00594  M01S00003.ns2623  +++|    BEGIN                            # IF UNKNOWN CHARACTER(S) #
00595  M01S00004.ns2623  +++|    ERRSTRING = "UNKNOWN CHARACTER(S) FOUND - CONVERTED TO ;";
00596  M01S00005.ns2623  +++|    END
00597  M00S00560.fsesubs +++|  RETURN;
00598  M00S00561.fsesubs +++|
00599  M00S00562.fsesubs +++|CI812:
00600  M00S00563.fsesubs +++|  SLOWC8I(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00601  M00S00564.fsesubs +++|  RETURN;
00602  M00S00565.fsesubs +++|
00603  M00S00566.fsesubs +++|  END                          # OF CONVIN        #
00604  M00S00567.fsesubs +++|
00605  M00S00568.fsesubs +++|
00606  M00S00569.fsesubs +++|PROC CONVOUT(TEXTLINE,CHARTYPE);
00607  M00S00570.fsesubs +++|  BEGIN
00608  M00S00571.fsesubs +++|#
00609  M00S00572.fsesubs +++|**        CONVOUT - CONVERT INTERNAL LINE IMAGE TO NOS FORMAT.
00610  M00S00573.fsesubs +++|*
00611  M00S00574.fsesubs +++|*         ENTRY  TEXTLINE - INTERNAL LINE IMAGE.
Line S00575 Modification History
M01 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00612  M01S00575.ns2582  ---|*                CHARTYPE - SAME AS "CONVOUT" ROUTINE.
Line S00006 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00613  M01S00006.ns2582  +++|*                CHARTYPE - CHARACTER SET CONVERSION MODE.
00614  M01S00007.ns2582  +++|*                           0 = 6 BIT DISPLAY,
00615  M01S00008.ns2582  +++|*                           1 = 6 BIT DISPLAY,
00616  M01S00009.ns2582  +++|*                           2 = 6/12 ASCII,
00617  M01S00010.ns2582  +++|*                           3 = 8/12 ASCII,
00618  M01S00011.ns2582  +++|*                           4 = 8/12 ASCII, IGNORE COLON CONVERSION.
Line S00007 Modification History
M01 (Added by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00619  M01S00007.ns2225  +++|*                ZEROCOLOUT - 7404 VERSUS 00 FORMAT FOR COLONS WHEN
00620  M01S00008.ns2225  +++|*                    6/12 CHARACTER SET DETECTED.
00621  M00S00576.fsesubs +++|*
00622  M00S00577.fsesubs +++|*         EXIT   TMPLIN - CONTAINS NOS LINE IMAGE.
00623  M00S00578.fsesubs +++|*
00624  M00S00579.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00625  M00S00580.fsesubs +++|*
00626  M00S00581.fsesubs +++|*         CALLS  LENGTH, FASTCAO, FASTCNO, NOSWDSZ, SLOWC8O.
00627  M00S00582.fsesubs +++|#
00628  M00S00583.fsesubs +++|  ARRAY TEXTLINE[0:99]; ITEM TEXT;
00629  M00S00584.fsesubs +++|  ITEM CHARTYPE;
Line S00585 Modification History
M01 (Removed by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00630  M01S00585.ns2225  ---|  ITEM TMP1, TMP2;
Line S00009 Modification History
M01 (Added by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00631  M01S00009.ns2225  +++|  ITEM TMP1, TMP2, BOOL B;
Line S00586 Modification History
M01 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00632  M01S00586.ns2582  ---|  SWITCH CONVOUTSW CONORM,CONORM,COASC,CO812;
Line S00012 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00633  M01S00012.ns2582  +++|  SWITCH CONVOUTSW CONORM,CONORM,COASC,CO812,COAINT;
00634  M00S00587.fsesubs +++|
00635  M00S00588.fsesubs +++|  TMP1=LENGTH(TEXTLINE);
Line S00589 Modification History
M01 (Removed by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00636  M01S00589.fsesu1  ---|  IF TMP1 NQ 0 THEN
Line S00001 Modification History
M01 (Added by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00637  M01S00001.fsesu1  +++|  IF TMP1 EQ 0 THEN
00638  M01S00002.fsesu1  +++|    BEGIN                            # EMPTY LINE IS TWO BLANKS #
Line S00003 Modification History
M01 (Added by) fsesu1
M02 (Removed by) fsesu2
Seq #  *Modification Id* Act 
----------------------------+
00639  M02S00003.fsesu2  ---|    TMPLINE[0]=O"5555 0000 0000 0000 0000";
00640  M02S00004.fsesu2  ---|    RETURN;
Line S00001 Modification History
M01 (Added by) fsesu2
Seq #  *Modification Id* Act 
----------------------------+
00641  M01S00001.fsesu2  +++|    IF CHARTYPE NQ 3 THEN
00642  M01S00002.fsesu2  +++|      BEGIN                          # IF DISPLAY OR 6/12 ASCII #
00643  M01S00003.fsesu2  +++|      TMPLINE[0]=O"5555 0000 0000 0000 0000";
00644  M01S00004.fsesu2  +++|      END
00645  M01S00005.fsesu2  +++|    ELSE
00646  M01S00006.fsesu2  +++|      BEGIN                          # 8/12 ASCII #
00647  M01S00007.fsesu2  +++|      TMPLINE[0]=O"0040 0040 0000 0000 0000";
00648  M01S00008.fsesu2  +++|      END
00649  M01S00009.fsesu2  +++|    RETURN;
Line S00005 Modification History
M01 (Added by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00650  M01S00005.fsesu1  +++|    END
Line S00006 Modification History
M01 (Added by) fsesu1
M02 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00651  M02S00006.ns2582  ---|  ELSE
Line S00013 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00652  M01S00013.ns2582  +++|  IF CHARTYPE LS 3 THEN              # IF DISPLAY OR STANDARD ASCII #
00653  M00S00590.fsesubs +++|    BEGIN
00654  M00S00591.fsesubs +++|    GETCHAR(TEXT,TMP1-1,TMP2);
Line S00592 Modification History
M01 (Removed by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00655  M01S00592.fsesu1  ---|    IF TMP2 EQ CCOLON THEN     # EXPLICIT COLONS NEED BLANK  #
00656  M01S00593.fsesu1  ---|      BEGIN
Line S00007 Modification History
M01 (Added by) fsesu1
M02 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00657  M02S00007.ns2582  ---|    IF TMP2 EQ CCOLON AND CHARTYPE NQ 3 THEN
Line S00014 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00658  M01S00014.ns2582  +++|    IF TMP2 EQ CCOLON THEN
Line S00008 Modification History
M01 (Added by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00659  M01S00008.fsesu1  +++|      BEGIN                          # TRAILING COLONS NEED A BLANK #
00660  M00S00594.fsesubs +++|      SETCHAR(TEXT,TMP1,CBLANK);
00661  M00S00595.fsesubs +++|      TMP1=TMP1+1;
00662  M00S00596.fsesubs +++|      SETCHAR(TEXT,TMP1,CENDLINE);
00663  M00S00597.fsesubs +++|      END
Line S00009 Modification History
M01 (Added by) fsesu1
M02 (Removed by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00664  M02S00009.ns2582  ---|    GOTO CONVOUTSW[CHARTYPE];
00665  M00S00598.fsesubs +++|    END
Line S00015 Modification History
M01 (Added by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00666  M01S00015.ns2582  +++|  GOTO CONVOUTSW[CHARTYPE];
00667  M01S00016.ns2582  +++|
00668  M01S00017.ns2582  +++|COAINT:
00669  M01S00018.ns2582  +++|  BOOL = TRUE;                       # FORCE COLONS TO BE 7404B #
00670  M01S00019.ns2582  +++|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,BOOL);
00671  M01S00020.ns2582  +++|  RETURN;
Line S00599 Modification History
M01 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00672  M01S00599.fsesu3  ---|
Line S00600 Modification History
M01 (Removed by) fsesu1
M02 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00673  M02S00600.fsesu3  ---|  GOTO CONVOUTSW[CHARTYPE];
Line S00601 Modification History
M01 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00674  M01S00601.fsesu3  ---|
00675  M01S00602.fsesu3  ---|COASC:
Line S00603 Modification History
M01 (Removed by) ns2225
M02 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00676  M02S00603.fsesu3  ---|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,TRUE);
Line S00010 Modification History
M01 (Added by) ns2225
M02 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00677  M02S00010.fsesu3  ---|  BOOL=NOT ZEROCOLOUT;
00678  M02S00011.fsesu3  ---|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,BOOL);
Line S00604 Modification History
M01 (Removed by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00679  M01S00604.fsesu3  ---|  GOTO COLAST;
00680  M01S00605.fsesu3  ---|
00681  M01S00606.fsesu3  ---|CONORM:
00682  M01S00607.fsesu3  ---|  FASTCNO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00683  M01S00608.fsesu3  ---|  GOTO COLAST;
00684  M01S00609.fsesu3  ---|
00685  M01S00610.fsesu3  ---|COLAST:                      # ASSURE NO 66-BIT TERMINATORS          #
00686  M01S00611.fsesu3  ---|  TMP1=NOSWDSZ(BUFWIDE2,TMPLIN);
Line S00001 Modification History
M01 (Added by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00687  M01S00001.fsesu3  +++|
00688  M01S00002.fsesu3  +++|COASC:
00689  M01S00003.fsesu3  +++|  BOOL=NOT ZEROCOLOUT;
00690  M01S00004.fsesu3  +++|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,BOOL);
00691  M01S00005.fsesu3  +++|  RETURN;
00692  M01S00006.fsesu3  +++|
00693  M01S00007.fsesu3  +++|CONORM:
00694  M01S00008.fsesu3  +++|  FASTCNO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00695  M01S00009.fsesu3  +++|  TMP1=NOSWDSZ(BUFWIDE2,TMPLIN);     # PREVENT 66 BIT END OF LINE #
00696  M00S00612.fsesubs +++|  IF TMP1 GR 1 AND TMPLINE[TMP1-1] EQ 0
00697  M00S00613.fsesubs +++|    AND TMPLINE[TMP1-2] LAN O"00000000000000007700" NQ 0
00698  M00S00614.fsesubs +++|    AND TMPLINE[TMP1-2] LAN O"00000000000000000077" EQ 0
00699  M00S00615.fsesubs +++|    THEN TMPLINE[TMP1-2]=TMPLINE[TMP1-2] LOR O"00000000000000000055";
00700  M00S00616.fsesubs +++|  RETURN;
00701  M00S00617.fsesubs +++|
00702  M00S00618.fsesubs +++|CO812:
00703  M00S00619.fsesubs +++|  SLOWC8O(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00704  M00S00620.fsesubs +++|  RETURN;
00705  M00S00621.fsesubs +++|
00706  M00S00622.fsesubs +++|  END                          # OF CONVOUT        #
00707  M00S00623.fsesubs +++|
00708  M00S00624.fsesubs +++|
00709  M00S00625.fsesubs +++|PROC SLOWC8I(TEXTLIN,BUFLIN,SIZE1,SIZE2);
00710  M00S00626.fsesubs +++|  BEGIN
00711  M00S00627.fsesubs +++|#
00712  M00S00628.fsesubs +++|**        SLOWC8I - CONVERT 8/12 INPUT LINE TO INTERNAL CHARSET.
00713  M00S00629.fsesubs +++|*
00714  M00S00630.fsesubs +++|*         ENTRY  BUFLIN - NOS LINE IMAGE.
00715  M00S00631.fsesubs +++|*                SIZE1 - CAPACITY OF TEXTLIN IN WORDS.
00716  M00S00632.fsesubs +++|*                SIZE2 - CAPACITY OF BUFLIN IN WORDS.
00717  M00S00633.fsesubs +++|*
00718  M00S00634.fsesubs +++|*         EXIT   TEXTLIN - INTERNAL LINE IMAGE.
00719  M00S00635.fsesubs +++|*
00720  M00S00636.fsesubs +++|*         MACROS SETCHAR, MOD.
00721  M00S00637.fsesubs +++|*
00722  M00S00638.fsesubs +++|*         NOTE   ALGORITHM SENSITIVE TO INTERNAL FORMAT DEFINITION.
00723  M00S00639.fsesubs +++|#
00724  M00S00640.fsesubs +++|  ARRAY TEXTLIN [0:99]; ITEM TEXTLINE;
00725  M00S00641.fsesubs +++|  ARRAY BUFLIN [0:99]; ITEM BUFLINE;
00726  M00S00642.fsesubs +++|  ITEM SIZE1, SIZE2;
00727  M00S00643.fsesubs +++|  ITEM TMP1, TMP2;
00728  M00S00644.fsesubs +++|
00729  M00S00645.fsesubs +++|  SETCHAR(TEXTLINE,BUFCM1,CENDLINE);
00730  M00S00646.fsesubs +++|  TMP1=0;
00731  M00S00647.fsesubs +++|  TMP2=CLETTERA;
00732  M00S00648.fsesubs +++|  WHYLE TMP1/8 LQ SIZE1 AND TMP1/5 LQ SIZE2 AND TMP2 NQ CENDLINE DO
00733  M00S00649.fsesubs +++|    BEGIN
00734  M00S00650.fsesubs +++|    TMP2=B<MOD(TMP1,5)*12,12>BUFLINE[TMP1/5];
00735  M00S00651.fsesubs +++|    IF TMP2 EQ 0 THEN TMP2=CENDLINE;
00736  M00S00652.fsesubs +++|    ELSE TMP2=XLTXPINT[TMP2 LAN O"177"];
00737  M00S00653.fsesubs +++|    SETCHAR(TEXTLINE,TMP1,TMP2);
00738  M00S00654.fsesubs +++|    TMP1=TMP1+1;
00739  M00S00655.fsesubs +++|    END
00740  M00S00656.fsesubs +++|  END                         # OF SLOWC8I        #
00741  M00S00657.fsesubs +++|
00742  M00S00658.fsesubs +++|
00743  M00S00659.fsesubs +++|PROC SLOWC8O(TEXTLIN,BUFLIN,SIZE1,SIZE2);
00744  M00S00660.fsesubs +++|  BEGIN
00745  M00S00661.fsesubs +++|#
00746  M00S00662.fsesubs +++|**        SLOWC8O - CONVERT INTERNAL LINE IMAGE TO 8/12 FORMAT.
00747  M00S00663.fsesubs +++|*
00748  M00S00664.fsesubs +++|*         ENTRY  TEXTLIN - INTERNAL LINE IMAGE.
00749  M00S00665.fsesubs +++|*                SIZE1, SIZE2 - SIMILAR TO "SLOWC8I" ROUTINE.
00750  M00S00666.fsesubs +++|*
00751  M00S00667.fsesubs +++|*         EXIT   BUFLIN - 8/12 FORMAT LINE IMAGE.
00752  M00S00668.fsesubs +++|*
00753  M00S00669.fsesubs +++|*         MACROS SETCHAR, GETCHAR.
00754  M00S00670.fsesubs +++|*
00755  M00S00671.fsesubs +++|*         NOTE   ALGORITHM SENSITIVE TO INTERNAL FORMAT DEFINITION.
00756  M00S00672.fsesubs +++|#
00757  M00S00673.fsesubs +++|  ARRAY TEXTLIN [0:99]; ITEM TEXTLINE;
00758  M00S00674.fsesubs +++|  ARRAY BUFLIN [0:99]; ITEM BUFLINE;
00759  M00S00675.fsesubs +++|  ITEM SIZE1, SIZE2;
00760  M00S00676.fsesubs +++|  ITEM TMP1, TMP2;
00761  M00S00677.fsesubs +++|
00762  M00S00678.fsesubs +++|  SETCHAR(TEXTLINE,BUFCM1,CENDLINE);
00763  M00S00679.fsesubs +++|  FOR TMP1=1 STEP 1 UNTIL SIZE2 DO BUFLINE[TMP1-1]=0;
00764  M00S00680.fsesubs +++|  TMP1=0;
00765  M00S00681.fsesubs +++|  TMP2=1;
00766  M00S00682.fsesubs +++|  WHYLE TMP1/8 LQ SIZE1 AND TMP1/5 LQ SIZE2 AND TMP2 NQ 0 DO
00767  M00S00683.fsesubs +++|    BEGIN
00768  M00S00684.fsesubs +++|    GETCHAR(TEXTLINE,TMP1,TMP2);
00769  M00S00685.fsesubs +++|    IF TMP2 EQ CENDLINE THEN TMP2=0;
00770  M00S00686.fsesubs +++|    ELSE TMP2=XLTINTXP[TMP2] LAN O"3777";
00771  M00S00687.fsesubs +++|    B<MOD(TMP1,5)*12,12>BUFLINE[TMP1/5]=TMP2;
00772  M00S00688.fsesubs +++|    TMP1=TMP1+1;
00773  M00S00689.fsesubs +++|    END
00774  M00S00690.fsesubs +++|
00775  M00S00691.fsesubs +++|  END                         # OF SLOWC8O        #
00776  M00S00692.fsesubs +++|
00777  M00S00693.fsesubs +++|
00778  M00S00694.fsesubs +++|PROC GETLNUM;
00779  M00S00695.fsesubs +++|  BEGIN
00780  M00S00696.fsesubs +++|#
00781  M00S00697.fsesubs +++|**        GETLNUM - ANALYZE INTERNAL LINE IMAGE FOR SEQUENCE NUM.
00782  M00S00698.fsesubs +++|*
00783  M00S00699.fsesubs +++|*         GETLNUM IS USED TO RECOGNIZE A LINE NUMBER ON THE CURRENT
00784  M00S00700.fsesubs +++|*         LINE.  WE SET LINENO TO ITS BINARY VALUE.  WE ALSO SET
00785  M00S00701.fsesubs +++|*         WIDTHFOUND TO THE NUMBER OF DIGITS.  NOTE THAT IF
00786  M00S00702.fsesubs +++|*         THERE IS NO NUMBER, WE RETURN WIDTHFOUND=0, LINENO=0.
00787  M00S00703.fsesubs +++|*
00788  M00S00704.fsesubs +++|*         ENTRY  (LIN) - ALREADY CONTAINS LINE IMAGE.
00789  M00S00705.fsesubs +++|*
00790  M00S00706.fsesubs +++|*         EXIT   LINENO, WIDTHFOUND ARE SET.
00791  M00S00707.fsesubs +++|*
00792  M00S00708.fsesubs +++|*         MACROS GETCHAR.
00793  M00S00709.fsesubs +++|#
00794  M00S00710.fsesubs +++|  ITEM QUIT B;
00795  M00S00711.fsesubs +++|  ITEM TMP2, TMP3;
00796  M00S00712.fsesubs +++|
00797  M00S00713.fsesubs +++|  LINENO=0;
00798  M00S00714.fsesubs +++|  WIDTHFOUND=0;
00799  M00S00715.fsesubs +++|  QUIT=FALSE;
00800  M00S00716.fsesubs +++|  FOR TMP2=0 STEP 1 WHILE TMP2 LS NUMWIDTH AND NOT QUIT DO
00801  M00S00717.fsesubs +++|    BEGIN
00802  M00S00718.fsesubs +++|    GETCHAR(LINE,TMP2,TMP3);
00803  M00S00719.fsesubs +++|    IF TMP3 GQ CDIGIT0 AND TMP3 LQ CDIGIT9 THEN
00804  M00S00720.fsesubs +++|      BEGIN
00805  M00S00721.fsesubs +++|      LINENO=LINENO*10 + TMP3-CDIGIT0;
00806  M00S00722.fsesubs +++|      WIDTHFOUND=WIDTHFOUND+1;
00807  M00S00723.fsesubs +++|      END
00808  M00S00724.fsesubs +++|    ELSE QUIT=TRUE;
00809  M00S00725.fsesubs +++|    END
00810  M00S00726.fsesubs +++|
00811  M00S00727.fsesubs +++|  END                          # OF GETLNUM        #
00812  M00S00728.fsesubs +++|
00813  M00S00729.fsesubs +++|
00814  M00S00730.fsesubs +++|PROC SETLNUM;
00815  M00S00731.fsesubs +++|  BEGIN
00816  M00S00732.fsesubs +++|#
00817  M00S00733.fsesubs +++|**        SETLNUM - FORMAT SEQUENCE NUMBER ONTO INTERNAL LINE.
00818  M00S00734.fsesubs +++|*
00819  M00S00735.fsesubs +++|*         SETLNUM ADJUSTS THE WIDTH OF ANY EXISTING SEQUENCE
00820  M00S00736.fsesubs +++|*         NUMBER, THEN PLACES THE NEW SEQUENCE NUMBER VALUE ON
00821  M00S00737.fsesubs +++|*         THE LINE.
00822  M00S00738.fsesubs +++|*
00823  M00S00739.fsesubs +++|*         ENTRY  (LIN) - EXISTING INTERNAL FORMAT LINE IMAGE.
00824  M00S00740.fsesubs +++|*                (LINENO) - NEW SEQUENCE VALUE.
00825  M00S00741.fsesubs +++|*
00826  M00S00742.fsesubs +++|*         EXIT   (LIN) - FIXED UP.
00827  M00S00743.fsesubs +++|*
00828  M00S00744.fsesubs +++|*         MACROS SETCHAR.
00829  M00S00745.fsesubs +++|*
00830  M00S00746.fsesubs +++|*         CALLS  GETLNUM, LSHIFT, RSHIFT.
00831  M00S00747.fsesubs +++|*
00832  M00S00748.fsesubs +++|*         NOTES  USES LINENO THEN RESTORES IT.
00833  M00S00749.fsesubs +++|#
00834  M00S00750.fsesubs +++|  ITEM TMP1,TMP2,TMP3;
00835  M00S00751.fsesubs +++|
00836  M00S00752.fsesubs +++|  IF NUMBERED[CURFILE] EQ 0 THEN RETURN;
00837  M00S00753.fsesubs +++|  TMP2=LINENO;
00838  M00S00754.fsesubs +++|  GETLNUM;                   # CHECK EXISTING NUMBER DIGITS          #
00839  M00S00755.fsesubs +++|  LINENO=TMP2;               # RESTORE #
00840  M00S00756.fsesubs +++|  IF WIDTHFOUND NQ NUMWIDTH THEN
00841  M00S00757.fsesubs +++|    BEGIN
00842  M00S00758.fsesubs +++|    LSHIFT(LIN,WIDTHFOUND,WIDTHFOUND);
00843  M00S00759.fsesubs +++|    RSHIFT(LIN,0,NUMWIDTH);
00844  M00S00760.fsesubs +++|    END
00845  M00S00761.fsesubs +++|  FOR TMP1=NUMWIDTH-1 STEP -1 UNTIL 0 DO
00846  M00S00762.fsesubs +++|    BEGIN
00847  M00S00763.fsesubs +++|    TMP3=MOD(TMP2,10)+CDIGIT0;
00848  M00S00764.fsesubs +++|    SETCHAR(LINE,TMP1,TMP3);
00849  M00S00765.fsesubs +++|    TMP2=TMP2/10;
00850  M00S00766.fsesubs +++|    END
00851  M00S00767.fsesubs +++|  IF BLANKS NQ 0 THEN
00852  M00S00768.fsesubs +++|    BEGIN
00853  M00S00769.fsesubs +++|    GETCHAR(LINE,NUMWIDTH,TMP1);
00854  M00S00770.fsesubs +++|    IF TMP1 NQ CBLANK THEN RSHIFT(LIN,NUMWIDTH,1);
00855  M00S00771.fsesubs +++|    SETCHAR(LINE,NUMWIDTH,CBLANK);
00856  M00S00772.fsesubs +++|    END
00857  M00S00773.fsesubs +++|  END                         # OF SETLNUM        #
00858  M00S00774.fsesubs +++|
00859  M00S00775.fsesubs +++|
00860  M00S00776.fsesubs +++|PROC TRIMPAD;
00861  M00S00777.fsesubs +++|  BEGIN
00862  M00S00778.fsesubs +++|#
00863  M00S00779.fsesubs +++|**        TRIMPAD - TRIM OFF TRAILING BLANKS, PAD SEQUENCE.
00864  M00S00780.fsesubs +++|*
00865  M00S00781.fsesubs +++|*         TRIMPAD TRIMS ALL TRAILING BLANKS FOR A LINE IMAGE IN
00866  M00S00782.fsesubs +++|*         THE INTERNAL CHARACTER SET, AND FOR SEQUENCE-NUMBERED
00867  M00S00783.fsesubs +++|*         FILES IT ALSO PADS A BLANK ON LINES CONSISTING ONLY OF
00868  M00S00784.fsesubs +++|*         A SEQUENCE NUMBER.
00869  M00S00785.fsesubs +++|*
00870  M00S00786.fsesubs +++|*         ENTRY  (LIN) - LINE IMAGE TO BE PROCESSED.
00871  M00S00787.fsesubs +++|*                NUMBERED[CURFILE] - INDICATES SEQUENCE PADDING.
00872  M00S00788.fsesubs +++|*
00873  M00S00789.fsesubs +++|*         EXIT   (LIN) - UPDATED.
00874  M00S00790.fsesubs +++|*
00875  M00S00791.fsesubs +++|*         MACROS SETCHAR.
00876  M00S00792.fsesubs +++|*
00877  M00S00793.fsesubs +++|*         CALLS  TRIM, PAD, GETLNUM.
00878  M00S00794.fsesubs +++|*
00879  M00S00795.fsesubs +++|*         USES   WIDTHFOUND.
00880  M00S00796.fsesubs +++|*
00881  M00S00797.fsesubs +++|*         NOTES  USES LINENO THEN RESTORES IT.
00882  M00S00798.fsesubs +++|#
00883  M00S00799.fsesubs +++|  ITEM TMP1;
00884  M00S00800.fsesubs +++|  IF NUMBERED[CURFILE] NQ 0 THEN
00885  M00S00801.fsesubs +++|    BEGIN
00886  M00S00802.fsesubs +++|    TMP1=LINENO;
00887  M00S00803.fsesubs +++|    GETLNUM;
00888  M00S00804.fsesubs +++|    LINENO=TMP1;
00889  M00S00805.fsesubs +++|    IF LENGTH(LIN) LS WIDTHFOUND+BLANKS THEN PAD(LIN);
00890  M00S00806.fsesubs +++|    TRIM(LIN,WIDTHFOUND+BLANKS);
00891  M00S00807.fsesubs +++|    END
00892  M00S00808.fsesubs +++|  ELSE SETCHAR(LINE,FASTLNB(LIN),CENDLINE);
00893  M00S00809.fsesubs +++|  END                          # OF TRIMPAD #
00894  M00S00810.fsesubs +++|
00895  M00S00811.fsesubs +++|
00896  M00S00812.fsesubs +++|PROC TRIM(ALIN,MINIMUM);
00897  M00S00813.fsesubs +++|  BEGIN
00898  M00S00814.fsesubs +++|#
00899  M00S00815.fsesubs +++|**        TRIM - TRIM OFF TRAILING BLANKS.
00900  M00S00816.fsesubs +++|*
00901  M00S00817.fsesubs +++|*         ENTRY  ALIN - LINE IMAGE TO PROCESS.
00902  M00S00818.fsesubs +++|*                MINIMUM - MINIMUM LENGTH TO RESPECT.
00903  M00S00819.fsesubs +++|*
00904  M00S00820.fsesubs +++|*         EXIT   ALIN - UPDATED.
00905  M00S00821.fsesubs +++|*
00906  M00S00822.fsesubs +++|*         MACROS SETCHAR.
00907  M00S00823.fsesubs +++|*
00908  M00S00824.fsesubs +++|*         CALLS  FASTLNB.
00909  M00S00825.fsesubs +++|#
00910  M00S00826.fsesubs +++|  ARRAY ALIN[0:99]; ITEM ALINE;
00911  M00S00827.fsesubs +++|  ITEM MINIMUM;
00912  M00S00828.fsesubs +++|  SETCHAR(ALINE,MAX(MINIMUM,FASTLNB(ALIN)),CENDLINE);
00913  M00S00829.fsesubs +++|  END                          # OF TRIM #
00914  M00S00830.fsesubs +++|
00915  M00S00831.fsesubs +++|
00916  M00S00832.fsesubs +++|PROC PAD(ALIN);
00917  M00S00833.fsesubs +++|  BEGIN
00918  M00S00834.fsesubs +++|#
00919  M00S00835.fsesubs +++|**        PAD - ADD TRAILING BLANKS TO INTERNAL LINE IMAGE.
00920  M00S00836.fsesubs +++|*
00921  M00S00837.fsesubs +++|*         ENTRY  ALIN - LINE IMAGE TO PROCESS.
00922  M00S00838.fsesubs +++|*
00923  M00S00839.fsesubs +++|*         EXIT   ALIN - PADDED TO MAXIMUM WIDTH.
00924  M00S00840.fsesubs +++|*
00925  M00S00841.fsesubs +++|*         MACROS SETCHAR.
00926  M00S00842.fsesubs +++|*
00927  M00S00843.fsesubs +++|*         CALLS  LENGTH.
00928  M00S00844.fsesubs +++|#
00929  M00S00845.fsesubs +++|  ARRAY ALIN [0:99]; ITEM ALINE;
00930  M00S00846.fsesubs +++|  ITEM TMP1,TMP2,TMP3;
00931  M00S00847.fsesubs +++|  ARRAY CHARMASKS [0:7]; ITEM MASK=[
00932  M00S00848.fsesubs +++|    O"03777777777777777777",
00933  M00S00849.fsesubs +++|    O"00017777777777777777",
00934  M00S00850.fsesubs +++|    O"00000077777777777777",
00935  M00S00851.fsesubs +++|    O"00000000377777777777",
00936  M00S00852.fsesubs +++|    O"00000000001777777777",
00937  M00S00853.fsesubs +++|    O"00000000000007777777",
00938  M00S00854.fsesubs +++|    O"00000000000000037777",
00939  M00S00855.fsesubs +++|    O"00000000000000000177"];
00940  M00S00856.fsesubs +++|  TMP2=LENGTH(ALIN);
00941  M00S00857.fsesubs +++|  TMP3=TMP2/8;
00942  M00S00858.fsesubs +++|  TMP2=MASK[TMP2 LAN 7];
00943  M00S00859.fsesubs +++|  ALINE[TMP3]=(ALINE[TMP3] LAN (LNO TMP2)) LOR (ALLBLANKS LAN TMP2);
00944  M00S00860.fsesubs +++|  FOR TMP1=TMP3+1 STEP 1 UNTIL BUFWID DO ALINE[TMP1]=ALLBLANKS;
00945  M00S00861.fsesubs +++|  SETCHAR(ALINE,BUFCHAR,CENDLINE);
00946  M00S00862.fsesubs +++|  END                         # OF PAD  #
00947  M00S00863.fsesubs +++|PAGE                         # BASIC IO ROUTINES #
00948  M00S00864.fsesubs +++|
00949  M00S00865.fsesubs +++|#
00950  M00S00866.fsesubs +++|**        WORKIO INTERFACE ROUTINES.
00951  M00S00867.fsesubs +++|*
00952  M00S00868.fsesubs +++|*         THE WORKIO ENTRY POINTS (POS,FWD,BAK,INS,DEL,REP) ALL NEED
00953  M00S00869.fsesubs +++|*         ADDITIONAL PROCESSING FOR MOST EDITOR OPERATIONS, SO THE
00954  M00S00870.fsesubs +++|*         EDITOR CONTAINS SEVERAL INTERFACE ROUTINES.  THOSE NAMED
00955  M00S00871.fsesubs +++|*         WITH "X" APPEAR IN THE SCREEN MODULE AND SYNCHRONIZE THE
00956  M00S00872.fsesubs +++|*         SCREEN.  "Y" ENTRY POINTS PERFORM SECRET CHANGES WITHOUT
00957  M00S00873.fsesubs +++|*         FLAGGING EITHER FILE BRACKET AS CHANGED.  "Z" ENTRY POINTS
00958  M00S00874.fsesubs +++|*         PERFORM POINTER VECTOR RELOCATION AND FLAG THE CURRENT FILE
00959  M00S00875.fsesubs +++|*         BRACKET AS CHANGED.  NOTE THAT THE "X" INTERFACES USE "Z".
00960  M00S00876.fsesubs +++|*
00961  M00S00877.fsesubs +++|*         "Z" INTERFACES ALSO PERFORM AUDIT TRAIL MAINTENANCE WHEN
00962  M00S00878.fsesubs +++|*         THE "UNDO" FACILITY IS ENABLED. "TMPLINE" IS USED FOR THIS.
00963  M00S00879.fsesubs +++|*
00964  M00S00880.fsesubs +++|*         THUS ALL INTERFACES EXCEPT "Y" REQUIRE "CURFILE" SETUP AS
00965  M00S00881.fsesubs +++|*         AN IMPLIED PARAMETER UPON ENTRY.
00966  M00S00882.fsesubs +++|*
00967  M00S00883.fsesubs +++|*         LINEBUF IS A BASED ARRAY WHICH IS POINTED TO THE DESIRED
00968  M00S00884.fsesubs +++|*         LINE BUFFER FOR WORKIO.  REDEFINITION OF LINEBUF IS
00969  M00S00885.fsesubs +++|*         RESTRICTED IN THAT IT MUST POINT TO "LIN" ANY TIME THE
00970  M00S00886.fsesubs +++|*         MULTI-USER EDITOR CODE REACHES AN INTERNAL SWAP EVENT.  THE
00971  M00S00887.fsesubs +++|*         RESULT OF THIS RESTRICTION IS THAT LINEBUF ALMOST ALWAYS
00972  M00S00888.fsesubs +++|*         IS POINTED AT "LIN", EXCEPT FOR SPECIAL SEQUENCES (AUDIT
00973  M00S00889.fsesubs +++|*         TRAIL FOR UNDO) WHICH ARE KNOWN TO NOT PERMIT INTERNAL SWAP.
00974  M00S00890.fsesubs +++|*         ALSO, THE POS ENTRY TO WORKIO WILL NOT COPY TEXT INTO THE
00975  M00S00891.fsesubs +++|*         LINE BUFFER IF THE LINE ORDINAL IN NEWCURL IS COMPLEMENTED.
00976  M00S00892.fsesubs +++|#
00977  M00S00893.fsesubs +++|
00978  M00S00894.fsesubs +++|PROC POSZ(PARM);
00979  M00S00895.fsesubs +++|  IOBEGIN(POSZ)
00980  M00S00896.fsesubs +++|  ITEM PARM;
00981  M00S00897.fsesubs +++|  NEWCURL=PARM;
00982  M00S00898.fsesubs +++|  POS;
00983  M00S00899.fsesubs +++|  IOEND                       # OF POSZ #
00984  M00S00900.fsesubs +++|
00985  M00S00901.fsesubs +++|
00986  M00S00902.fsesubs +++|PROC FWDZ;
00987  M00S00903.fsesubs +++|  IOBEGIN(FWDZ)
00988  M00S00904.fsesubs +++|  FWD;
00989  M00S00905.fsesubs +++|  IOEND                       # OF FWDZ #
00990  M00S00906.fsesubs +++|
00991  M00S00907.fsesubs +++|
00992  M00S00908.fsesubs +++|PROC BAKZ;
00993  M00S00909.fsesubs +++|  IOBEGIN(BAKZ)
00994  M00S00910.fsesubs +++|  BAK;
00995  M00S00911.fsesubs +++|  IOEND                       # OF BAKZ #
00996  M00S00912.fsesubs +++|
00997  M00S00913.fsesubs +++|
00998  M00S00914.fsesubs +++|PROC INSZ;
00999  M00S00915.fsesubs +++|  IOBEGIN(INSZ)
01000  M00S00916.fsesubs +++|  AUDITINS;                  # AUDIT INSERTION   #
01001  M00S00917.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01002  M00S00918.fsesubs +++|  INS;
01003  M00S00919.fsesubs +++|  RELOCATE(+1);
01004  M00S00920.fsesubs +++|  IOEND                       # OF INSZ #
01005  M00S00921.fsesubs +++|
01006  M00S00922.fsesubs +++|
01007  M00S00923.fsesubs +++|PROC DELZ;
01008  M00S00924.fsesubs +++|  IOBEGIN(DELZ)
01009  M00S00925.fsesubs +++|  AUDITDEL;                  # AUDIT DELETION    #
01010  M00S00926.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01011  M00S00927.fsesubs +++|  DELETEDONE=TRUE;
01012  M00S00928.fsesubs +++|  RELOCATE(-1);
01013  M00S00929.fsesubs +++|  DEL;
01014  M00S00930.fsesubs +++|  POSZ(CURRENT);
01015  M00S00931.fsesubs +++|  IOEND                       # OF DELZ           #
01016  M00S00932.fsesubs +++|
01017  M00S00933.fsesubs +++|
01018  M00S00934.fsesubs +++|PROC REPZ;
01019  M00S00935.fsesubs +++|  IOBEGIN(REPZ)
01020  M00S00936.fsesubs +++|  AUDITREP;                  # AUDIT REPLACE     #
01021  M00S00937.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01022  M00S00938.fsesubs +++|  REP;
01023  M00S00939.fsesubs +++|  IOEND                       # OF REPZ           #
01024  M00S00940.fsesubs +++|
01025  M00S00941.fsesubs +++|
01026  M00S00942.fsesubs +++|PROC INSY;
01027  M00S00943.fsesubs +++|  IOBEGIN(INSY)
01028  M00S00944.fsesubs +++|  INS;
01029  M00S00945.fsesubs +++|  RELOCATE(+1);
01030  M00S00946.fsesubs +++|  IOEND                       # OF INSY #
01031  M00S00947.fsesubs +++|
01032  M00S00948.fsesubs +++|
01033  M00S00949.fsesubs +++|PROC DELY;
01034  M00S00950.fsesubs +++|  IOBEGIN(DELY)
01035  M00S00951.fsesubs +++|  DELETEDONE=TRUE;
01036  M00S00952.fsesubs +++|  RELOCATE(-1);
01037  M00S00953.fsesubs +++|  DEL;
01038  M00S00954.fsesubs +++|  POSZ(CURRENT);
01039  M00S00955.fsesubs +++|  IOEND                       # OF DELY           #
01040  M00S00956.fsesubs +++|
01041  M00S00957.fsesubs +++|
01042  M00S00958.fsesubs +++|PROC REPY;
01043  M00S00959.fsesubs +++|  IOBEGIN(REPY)
01044  M00S00960.fsesubs +++|  REP;
01045  M00S00961.fsesubs +++|  IOEND                       # OF REPY           #
01046  M00S00962.fsesubs +++|
01047  M00S00963.fsesubs +++|
01048  M00S00964.fsesubs +++|PAGE                         # BASIC ROUTINES FOR POSITION STACK     #
01049  M00S00965.fsesubs +++|
01050  M00S00966.fsesubs +++|
01051  M00S00967.fsesubs +++|PROC PUSH;
01052  M00S00968.fsesubs +++|  BEGIN
01053  M00S00969.fsesubs +++|#
01054  M00S00970.fsesubs +++|**        PUSH - PUSH CURRENT LINE/FILE ONTO STACK.
01055  M00S00971.fsesubs +++|*
01056  M00S00972.fsesubs +++|*         ENTRY  CURRENT - LINE POSITION TO SAVE.
01057  M00S00973.fsesubs +++|*                CURFILE - FILE ASSOCIATION TO SAVE.
01058  M00S00974.fsesubs +++|*
01059  M00S00975.fsesubs +++|*         EXIT   STACKPTR, REGLINE, STKFILE - UPDATED.
01060  M00S00976.fsesubs +++|#
01061  M00S00977.fsesubs +++|  IF STACKPTR GQ MAXSTACK THEN
01062  M00S00978.fsesubs +++|    BEGIN
01063  M00S00979.fsesubs +++|    FATAL(" FILE POSITION STACK OVERFLOWED.$");
01064  M00S00980.fsesubs +++|    END
01065  M00S00981.fsesubs +++|  STACKPTR=STACKPTR+1;
01066  M00S00982.fsesubs +++|  REGLINE[STACKPTR]=CURRENT;
01067  M00S00983.fsesubs +++|  STKFILE[STACKPTR]=CURFILE;
01068  M00S00984.fsesubs +++|  END                         # OF PUSH #
01069  M00S00985.fsesubs +++|
01070  M00S00986.fsesubs +++|
01071  M00S00987.fsesubs +++|PROC POP;
01072  M00S00988.fsesubs +++|  IOBEGIN(POP)
01073  M00S00989.fsesubs +++|#
01074  M00S00990.fsesubs +++|**        POP - POP LINE/FILE POSITION FROM STACK.
01075  M00S00991.fsesubs +++|*
01076  M00S00992.fsesubs +++|*         ENTRY  REGLINE, STACKPTR, STKFILE - CONTAIN SAVED POSITION.
01077  M00S00993.fsesubs +++|*
01078  M00S00994.fsesubs +++|*         EXIT   LIN, CURRENT, CURFILE - RESTORED POSITION/TEXT.
01079  M00S00995.fsesubs +++|*                STACKPTR - UPDATED.
01080  M00S00996.fsesubs +++|#
01081  M00S00997.fsesubs +++|  IF STACKPTR LS 0 THEN
01082  M00S00998.fsesubs +++|    BEGIN
01083  M00S00999.fsesubs +++|    FATAL(" FILE POSITION STACK UNDERFLOWED (1).$");
01084  M00S01000.fsesubs +++|    END
01085  M00S01001.fsesubs +++|  POSZ(REGLINE[STACKPTR]);
01086  M00S01002.fsesubs +++|  CURFILE=STKFILE[STACKPTR];
01087  M00S01003.fsesubs +++|  STACKPTR=STACKPTR-1;
01088  M00S01004.fsesubs +++|  IOEND                       # OF POP  #
01089  M00S01005.fsesubs +++|
01090  M00S01006.fsesubs +++|
01091  M00S01007.fsesubs +++|PROC RELOCATE(PARM);
01092  M00S01008.fsesubs +++|  BEGIN
01093  M00S01009.fsesubs +++|  ITEM PARM;
01094  M00S01010.fsesubs +++|#
01095  M00S01011.fsesubs +++|**        RELOCATE - INTERFACE TO UPDATE VECTOR OF RELOCATABLES.
01096  M00S01012.fsesubs +++|*
01097  M00S01013.fsesubs +++|*         ENTRY  PARM - RELOCATION FACTOR.
01098  M00S01014.fsesubs +++|*                CURRENT - RELOCATION THRESHHOLD.
01099  M00S01015.fsesubs +++|*
01100  M00S01016.fsesubs +++|*         EXIT   REGSTACK - UPDATED.
01101  M00S01017.fsesubs +++|*
01102  M00S01018.fsesubs +++|*         CALLS  FASTRLC.
01103  M00S01019.fsesubs +++|#
01104  M00S01020.fsesubs +++|  FASTRLC(REGSTACK,MAXREG+1,CURRENT,PARM);
01105  M00S01021.fsesubs +++|  END                         # OF RELOCATE       #
01106  M00S01022.fsesubs +++|
01107  M00S01023.fsesubs +++|
01108  M00S01024.fsesubs +++|PAGE                         # AUDIT TRAIL ROUTINES        #
01109  M00S01025.fsesubs +++|
01110  M00S01026.fsesubs +++|
01111  M00S01027.fsesubs +++|#
01112  M00S01028.fsesubs +++|**        AUDIT TRAIL FACILITY.
01113  M00S01029.fsesubs +++|*
01114  M00S01030.fsesubs +++|*         AUDIT TRAIL ROUTINES PRESERVE THE CURRENT POSITION AND THE
01115  M00S01031.fsesubs +++|*         "LIN" BUFFER.  "TMPLIN" IS USED WIDELY.
01116  M00S01032.fsesubs +++|*
01117  M00S01033.fsesubs +++|*         FOR AN INSERTION, THE AUDIT RECORD IS A SINGLE DESCRIPTOR
01118  M00S01034.fsesubs +++|*         LINE WITH "I" TYPE AND THE FLOAT POSITION.
01119  M00S01035.fsesubs +++|*
01120  M00S01036.fsesubs +++|*         FOR A DELETION, WE WRITE THE OLD VERSION OF THE LINE THEN A
01121  M00S01037.fsesubs +++|*         DESCRIPTOR WITH "D" TYPE, FILE ID, AND FILE POSITION.
01122  M00S01038.fsesubs +++|*
01123  M00S01039.fsesubs +++|*         FOR A REPLACEMENT, WE WRITE THE OLD VERSION OF THE LINE AND
01124  M00S01040.fsesubs +++|*         AN "R" DESCRIPTOR, FILE ID, AND FILE POSITION.
01125  M00S01041.fsesubs +++|*
01126  M00S01042.fsesubs +++|*         TO CHECK POINT A MAJOR STOPPING POINT, WE WRITE A "C"
01127  M00S01043.fsesubs +++|*         DESCRIPTOR.  THIS INCLUDES FILE ID'S FOR BOTH OPEN
01128  M00S01044.fsesubs +++|*         BRACKETS, AND SPLIT SCREEN DIMENSIONS.
01129  M00S01045.fsesubs +++|*
01130  M00S01046.fsesubs +++|*         TO TERMINATE A SERIES OF MAJOR STOPPING POINTS, WE WRITE
01131  M00S01047.fsesubs +++|*         A "E" DESCRIPTOR.  THIS HAS NO PARAMETERS ON IT.
01132  M00S01048.fsesubs +++|*
01133  M00S01049.fsesubs +++|*         THIS AUDIT TRAIL FORMAT IS VIABLE ONLY WHEN SCANNED IN
01134  M00S01050.fsesubs +++|*         REVERSE ORDER, AND WHEN IT IS ASSURED TO REPRESENT ALL
01135  M00S01051.fsesubs +++|*         CHANGES.  THIS IMPLIES THAT THE "AUDITOFF" FLAG CAN BE SET
01136  M00S01052.fsesubs +++|*         TO DISABLE THE FACILITY, BUT IN ORDER TO CLEAR THE FLAG AND
01137  M00S01053.fsesubs +++|*         RE-ENABLE THE FACILITY, IT IS MANDATORY TO ISSUE AN "END"
01138  M00S01054.fsesubs +++|*         DESCRIPTOR AS DESCRIBED IN THE PREVIOUS PARAGRAPH.  THE
01139  M00S01055.fsesubs +++|*         UNDO INTERPRETER MUST NOT GO BEYOND THIS POINT.
01140  M00S01056.fsesubs +++|*
01141  M00S01057.fsesubs +++|*         NOTE THAT ENTRY POINTS AUDITEVENT AND AUDITNUM AND AUDITTEXT
01142  M00S01058.fsesubs +++|*         ARE USED ONLY BY AUDIT ROUTINES.  ENTRY POINTS AUDITINS,
01143  M00S01059.fsesubs +++|*         AUDITDEL, AND AUDITREP ARE INTENDED TO BE USED ONLY BY INSZ,
01144  M00S01060.fsesubs +++|*         DELZ, AND REPZ.  AUDITCHECK AND AUDITSYNCH ARE THE ENTRY
01145  M00S01061.fsesubs +++|*         POINTS SUITABLE FOR GENERAL USAGE.  AUDITTRAIL IS USED ONLY
01146  M00S01062.fsesubs +++|*         BY AUDIT ROUTINES.  AUDITTRAIL AND AUDITSYNCH ARE THE ONLY
01147  M00S01063.fsesubs +++|*         ROUTINES TO ACTUALLY MANIPULATE THE AUDIT BUFFERING AREA.
01148  M00S01064.fsesubs +++|*
01149  M00S01065.fsesubs +++|*         ROUTINES WHICH CALL AUDITTRAIL MUST SET UP THE BASE
01150  M00S01066.fsesubs +++|*         ADDRESS FOR LINEBUF, AND RESTORE IT.  SUCH ROUTINES
01151  M00S01067.fsesubs +++|*         CURRENTLY RESTORE THAT BASE ADDRESS BY ASSUMING THE
01152  M00S01068.fsesubs +++|*         CORRECT ADDRESS IS "LIN" RATHER THAN BY ACTUALLY
01153  M00S01069.fsesubs +++|*         SAVING AND RESTORING.  THUS, WE IMPOSE A GENERAL
01154  M00S01070.fsesubs +++|*         RESTRICTION THAT ANY EDITOR CODE WHICH CAUSES AUDITABLE
01155  M00S01071.fsesubs +++|*         WORKFILE CHANGES MUST USE "LIN" AS THE ADDRESS OF LINEBUF.
01156  M00S01072.fsesubs +++|*
01157  M00S01073.fsesubs +++|*         THE AUDIT TRAIL IS STAGED THRU A DEDICATED MEMORY BUFFER.
01158  M00S01074.fsesubs +++|*         AUDITSYNCH PURGES THIS BUFFER INTO THE AUDIT BRACKET OF
01159  M00S01075.fsesubs +++|*         THE WORKFILE, SO ANY ROUTINE THAT NEEDS TO ACCESS THE
01160  M00S01076.fsesubs +++|*         AUDIT TRAIL (I.E, THE UNDO FACILITY) MUST CALL AUDITSYNCH.
01161  M00S01077.fsesubs +++|*         THE STAGING AREA PROVIDES PERFORMANCE OPTIMIZATION BY
01162  M00S01078.fsesubs +++|*         DEFERRING AND BATCHING WORKFILE ACCESSES.
01163  M00S01079.fsesubs +++|*
01164  M00S01080.fsesubs +++|*         ALL AUDIT ROUTINES, WHICH ARE ALLOWED TO BE CALLED FROM
01165  M00S01081.fsesubs +++|*         OUTSIDE OF OTHER AUDIT ROUTINES, INSPECT THE AUDITOFF
01166  M00S01082.fsesubs +++|*         FLAG TO SEE IF THE FACILITY IS DISABLED.  ROUTINES WHICH
01167  M00S01083.fsesubs +++|*         ARE LOCAL TO THE AUDIT FACILITY DO NOT CHECK THIS FLAG,
01168  M00S01084.fsesubs +++|*         BOTH FOR EFFICIENCY AND TO ASSURE THAT STAGED DATA CAN
01169  M00S01085.fsesubs +++|*         BE HANDLED RIGOROUSLY.
01170  M00S01086.fsesubs +++|#
01171  M00S01087.fsesubs +++|
01172  M00S01088.fsesubs +++|
01173  M00S01089.fsesubs +++|PROC AUDITINS;
01174  M00S01090.fsesubs +++|  IOBEGIN(AUDITINS)
01175  M00S01091.fsesubs +++|#
01176  M00S01092.fsesubs +++|**        AUDITINS - AUDIT INTERFACE FOR INSZ.
01177  M00S01093.fsesubs +++|*
01178  M00S01094.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01179  M00S01095.fsesubs +++|#
01180  M00S01096.fsesubs +++|  IF AUDITOFF THEN IORET
01181  M00S01097.fsesubs +++|  AUDITEVENT(CLETTERI);
01182  M00S01098.fsesubs +++|  IOEND                       # OF AUDITINS       #
01183  M00S01099.fsesubs +++|
01184  M00S01100.fsesubs +++|
01185  M00S01101.fsesubs +++|PROC AUDITDEL;
01186  M00S01102.fsesubs +++|  IOBEGIN(AUDITDEL)
01187  M00S01103.fsesubs +++|#
01188  M00S01104.fsesubs +++|**        AUDITDEL - AUDIT INTERFACE FOR DELZ.
01189  M00S01105.fsesubs +++|*
01190  M00S01106.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01191  M00S01107.fsesubs +++|#
01192  M00S01108.fsesubs +++|  IF AUDITOFF THEN IORET
01193  M00S01109.fsesubs +++|  AUDITTEXT;
01194  M00S01110.fsesubs +++|  AUDITEVENT(CLETTERD);
01195  M00S01111.fsesubs +++|  IOEND                       # OF AUDITDEL       #
01196  M00S01112.fsesubs +++|
01197  M00S01113.fsesubs +++|
01198  M00S01114.fsesubs +++|PROC AUDITREP;
01199  M00S01115.fsesubs +++|  IOBEGIN(AUDITREP)
01200  M00S01116.fsesubs +++|#
01201  M00S01117.fsesubs +++|**        AUDITREP - AUDIT INTERFACE FOR REPZ.
01202  M00S01118.fsesubs +++|*
01203  M00S01119.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01204  M00S01120.fsesubs +++|#
01205  M00S01121.fsesubs +++|  IF AUDITOFF THEN IORET
01206  M00S01122.fsesubs +++|  AUDITTEXT;
01207  M00S01123.fsesubs +++|  AUDITEVENT(CLETTERR);
01208  M00S01124.fsesubs +++|  IOEND                       # OF AUDITREP       #
01209  M00S01125.fsesubs +++|
01210  M00S01126.fsesubs +++|
01211  M00S01127.fsesubs +++|PROC AUDITNUM(POS,NUM);
01212  M00S01128.fsesubs +++|  BEGIN
01213  M00S01129.fsesubs +++|#
01214  M00S01130.fsesubs +++|**        AUDITNUM - FORMAT NUMERIC VALUE INTO AUDIT DESCRIPTOR.
01215  M00S01131.fsesubs +++|*
01216  M00S01132.fsesubs +++|*         ENTRY  NUM, POS - VALUE AND CHARACTER POSITION.
01217  M00S01133.fsesubs +++|*
01218  M00S01134.fsesubs +++|*         EXIT   TMPLIN - CONTAINS FORMATTED VALUE.
01219  M00S01135.fsesubs +++|*
01220  M00S01136.fsesubs +++|*         MACROS SETCHAR.
01221  M00S01137.fsesubs +++|*
01222  M00S01138.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01223  M00S01139.fsesubs +++|#
01224  M00S01140.fsesubs +++|  ITEM POS, NUM, TMP2, TMP3, TMP4;
01225  M00S01141.fsesubs +++|  TMP2=NUM;
01226  M00S01142.fsesubs +++|  FOR TMP3=9 STEP -1 UNTIL 0 DO
01227  M00S01143.fsesubs +++|    BEGIN
01228  M00S01144.fsesubs +++|    TMP4=CDIGIT0+MOD(TMP2,10);
01229  M00S01145.fsesubs +++|    TMP2=TMP2/10;
01230  M00S01146.fsesubs +++|    SETCHAR(TMPLINE,POS+TMP3,TMP4);
01231  M00S01147.fsesubs +++|    END
01232  M00S01148.fsesubs +++|  SETCHAR(TMPLINE,POS+10,CBLANK);
01233  M00S01149.fsesubs +++|  END                       # OF AUDITNUM       #
01234  M00S01150.fsesubs +++|
01235  M00S01151.fsesubs +++|
01236  M00S01152.fsesubs +++|PROC AUDITEVENT(PARM);
01237  M00S01153.fsesubs +++|  IOBEGIN(AUDITEVENT)
01238  M00S01154.fsesubs +++|#
01239  M00S01155.fsesubs +++|**        AUDITEVENT - FORMAT AND TRANSMIT DESCRIPTOR.
01240  M00S01156.fsesubs +++|*
01241  M00S01157.fsesubs +++|*         ENTRY  PARM - TYPE OF DESCRIPTOR.
01242  M00S01158.fsesubs +++|*
01243  M00S01159.fsesubs +++|*         EXIT   DESCRIPTOR TRANSMITTED TO AUDIT TRAIL.
01244  M00S01160.fsesubs +++|*
01245  M00S01161.fsesubs +++|*         MACROS SETCHAR.
01246  M00S01162.fsesubs +++|*
01247  M00S01163.fsesubs +++|*         CALLS  AUDITNUM, AUDITTRAIL.
01248  M00S01164.fsesubs +++|*
01249  M00S01165.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01250  M00S01166.fsesubs +++|*
01251  M00S01167.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01252  M00S01168.fsesubs +++|#
01253  M00S01169.fsesubs +++|  ITEM PARM;
01254  M00S01170.fsesubs +++|
01255  M00S01171.fsesubs +++|  SETCHAR(TMPLINE,0,PARM);
01256  M00S01172.fsesubs +++|  # END OF PARAMETER USAGE #
01257  M00S01173.fsesubs +++|  AUDITNUM(1,CURFILE);
01258  M00S01174.fsesubs +++|  AUDITNUM(12,FDLF(CURFILE));
01259  M00S01175.fsesubs +++|  AUDITNUM(23,CURRENT-TOPF(CURFILE));
01260  M00S01176.fsesubs +++|  SETCHAR(TMPLINE,34,CENDLINE);
01261  M00S01177.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01262  M00S01178.fsesubs +++|  AUDITTRAIL;
01263  M00S01179.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01264  M00S01180.fsesubs +++|  IOEND                       # OF AUDITEVENT     #
01265  M00S01181.fsesubs +++|
01266  M00S01182.fsesubs +++|
01267  M00S01183.fsesubs +++|PROC AUDITTEXT;
01268  M00S01184.fsesubs +++|  IOBEGIN(AUDITTEXT)
01269  M00S01185.fsesubs +++|#
01270  M00S01186.fsesubs +++|**        AUDITTEXT - TRANSMIT TEXT LINE TO AUDIT TRAIL.
01271  M00S01187.fsesubs +++|*
01272  M00S01188.fsesubs +++|*         ENTRY  CURRENT - POINTS TO OLD LINE IMAGE IN WORKFILE.
01273  M00S01189.fsesubs +++|*
01274  M00S01190.fsesubs +++|*         CALLS  POSZ, AUDITTRAIL.
01275  M00S01191.fsesubs +++|*
01276  M00S01192.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01277  M00S01193.fsesubs +++|*
01278  M00S01194.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01279  M00S01195.fsesubs +++|#
01280  M00S01196.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01281  M00S01197.fsesubs +++|  POSZ(CURRENT);              # READ OLD VERSION  #
01282  M00S01198.fsesubs +++|  AUDITTRAIL;
01283  M00S01199.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01284  M00S01200.fsesubs +++|  IOEND                       # OF AUDITTEXT      #
01285  M00S01201.fsesubs +++|
01286  M00S01202.fsesubs +++|
01287  M00S01203.fsesubs +++|PROC AUDITCHECK;
01288  M00S01204.fsesubs +++|  IOBEGIN(AUDITCHECK)
01289  M00S01205.fsesubs +++|#
01290  M00S01206.fsesubs +++|**        AUDITCHECK - ISSUE CHECKPOINT TO AUDIT TRAIL.
01291  M00S01207.fsesubs +++|*
01292  M00S01208.fsesubs +++|*         ENTRY  AUDITUSED - INDICATES IF ANYTHING AUDITED SINCE
01293  M00S01209.fsesubs +++|*                    LAST CHECKPOINT.
01294  M00S01210.fsesubs +++|*
01295  M00S01211.fsesubs +++|*         EXIT   AUDITUSED - CLEAR TO SHOW CHECKPOINT IS MOST
01296  M00S01212.fsesubs +++|*                    RECENT AUDIT ENTRY.
01297  M00S01213.fsesubs +++|*
01298  M00S01214.fsesubs +++|*         MACROS SETCHAR.
01299  M00S01215.fsesubs +++|*
01300  M00S01216.fsesubs +++|*         CALLS  AUDITNUM, AUDITTRAIL.
01301  M00S01217.fsesubs +++|*
01302  M00S01218.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01303  M00S01219.fsesubs +++|*
01304  M00S01220.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01305  M00S01221.fsesubs +++|#
01306  M00S01222.fsesubs +++|  IF AUDITOFF THEN IORET
01307  M00S01223.fsesubs +++|  IF NOT AUDITUSED THEN IORET
01308  M00S01224.fsesubs +++|  SETCHAR(TMPLINE,0,CLETTERC);
01309  M00S01225.fsesubs +++|  AUDITNUM(1,FDLF(1));
01310  M00S01226.fsesubs +++|  AUDITNUM(12,FDLF(2));
01311  M00S01227.fsesubs +++|  AUDITNUM(23,NUMROWS[2]);
01312  M00S01228.fsesubs +++|  SETCHAR(TMPLINE,34,CENDLINE);
01313  M00S01229.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01314  M00S01230.fsesubs +++|  AUDITTRAIL;
01315  M00S01231.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01316  M00S01232.fsesubs +++|  AUDITUSED=FALSE;
01317  M00S01233.fsesubs +++|  IOEND                       # OF AUDITCHECK     #
01318  M00S01234.fsesubs +++|
01319  M00S01235.fsesubs +++|
01320  M00S01236.fsesubs +++|PROC AUDITEND;
01321  M00S01237.fsesubs +++|  IOBEGIN(AUDITEND)
01322  M00S01238.fsesubs +++|#
01323  M00S01239.fsesubs +++|**        AUDITEND - ISSUE TERMINATOR TO AUDIT TRAIL.
01324  M00S01240.fsesubs +++|*
01325  M00S01241.fsesubs +++|*         EXIT   AUDITUSED - CLEAR TO SHOW CHECKPOINT IS MOST
01326  M00S01242.fsesubs +++|*                    RECENT AUDIT ENTRY.
01327  M00S01243.fsesubs +++|*
01328  M00S01244.fsesubs +++|*         MACROS SETCHAR.
01329  M00S01245.fsesubs +++|*
01330  M00S01246.fsesubs +++|*         CALLS  AUDITTRAIL.
01331  M00S01247.fsesubs +++|*
01332  M00S01248.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01333  M00S01249.fsesubs +++|*
01334  M00S01250.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01335  M00S01251.fsesubs +++|#
01336  M00S01252.fsesubs +++|  IF AUDITOFF THEN IORET
01337  M00S01253.fsesubs +++|  SETCHAR(TMPLINE,0,CLETTERE);
01338  M00S01254.fsesubs +++|  SETCHAR(TMPLINE,1,CENDLINE);
01339  M00S01255.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01340  M00S01256.fsesubs +++|  AUDITTRAIL;
01341  M00S01257.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01342  M00S01258.fsesubs +++|  AUDITUSED=FALSE;
01343  M00S01259.fsesubs +++|  IOEND                       # OF AUDITEND     #
01344  M00S01260.fsesubs +++|
01345  M00S01261.fsesubs +++|
01346  M00S01262.fsesubs +++|PROC AUDITTRAIL;
01347  M00S01263.fsesubs +++|  IOBEGIN(AUDITTRAIL);
01348  M00S01264.fsesubs +++|#
01349  M00S01265.fsesubs +++|**        AUDITTRAIL - TRANSMIT LINE IMAGE TO AUDIT TRAIL.
01350  M00S01266.fsesubs +++|*
01351  M00S01267.fsesubs +++|*         ENTRY  P<LINEBUF> - POINTS TO INTERNAL LINE IMAGE.
01352  M00S01268.fsesubs +++|*
01353  M00S01269.fsesubs +++|*         EXIT   LINE IMAGE IS STAGED IN BUFFER.
01354  M00S01270.fsesubs +++|*                AUDITUSED - SET TO SHOW SOMETHING AUDITED SINCE
01355  M00S01271.fsesubs +++|*                    MOST RECENT CHECKPOINT.
01356  M00S01272.fsesubs +++|*                AUDITNEXT - UPDATED.
01357  M00S01273.fsesubs +++|*
01358  M00S01274.fsesubs +++|*         CALLS  LINESZ, MOVELN, AUDITSYNCH.
01359  M00S01275.fsesubs +++|*
01360  M00S01276.fsesubs +++|*         USES   P<TOO>.
01361  M00S01277.fsesubs +++|*
01362  M00S01278.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01363  M00S01279.fsesubs +++|#
01364  M00S01280.fsesubs +++|  ITEM TMP1;                 # USE INSTANTLY     #
01365  M00S01281.fsesubs +++|  TMP1=LINESZ(LINEBUF);      # MEASURE TEXT, FIX EOL BITS  #
01366  M00S01282.fsesubs +++|  IF TMP1 GQ AUDITSIZE-AUDITNEXT THEN AUDITSYNCH;    # ASSURE ROOM   #
01367  M00S01283.fsesubs +++|  P<TOO>=LOC(AUDITWORD[AUDITNEXT]);
01368  M00S01284.fsesubs +++|  AUDITNEXT=AUDITNEXT+MOVELN(LINEBUF,TOO);       # QUEUE THIS RECORD #
01369  M00S01285.fsesubs +++|  AUDITUSED=TRUE;
01370  M00S01286.fsesubs +++|  IOEND                       # OF AUDITTRAIL     #
01371  M00S01287.fsesubs +++|
01372  M00S01288.fsesubs +++|
01373  M00S01289.fsesubs +++|PROC AUDITSYNCH;
01374  M00S01290.fsesubs +++|  IOBEGIN(AUDITSYNCH);
01375  M00S01291.fsesubs +++|#
01376  M00S01292.fsesubs +++|**        AUDITSYNCH - FLUSH STAGING BUFFER INTO WORKFILE.
01377  M00S01293.fsesubs +++|*
01378  M00S01294.fsesubs +++|*         EXIT   CURA(AUDITCTL), AUDITNEXT - UPDATED.
01379  M00S01295.fsesubs +++|*
01380  M00S01296.fsesubs +++|*         USES   P<LINEBUF> WITH RESTORATION.
01381  M00S01297.fsesubs +++|*                "TEMP" WITH RESTORATION.
01382  M00S01298.fsesubs +++|*
01383  M00S01299.fsesubs +++|*         CALLS  PUSHTEMP, POPTEMP, PUSH, POP, POSZ, INS,
01384  M00S01300.fsesubs +++|*                RELOCATE.
01385  M00S01301.fsesubs +++|*
01386  M00S01302.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01387  M00S01303.fsesubs +++|*                REQUIRES WORKIO CAPABILITY TO POSITION FILE WITH
01388  M00S01304.fsesubs +++|*                NO COPY OF LINE IMAGE.
01389  M00S01305.fsesubs +++|#
01390  M00S01306.fsesubs +++|  PUSHTEMP;
01391  M00S01307.fsesubs +++|  TEMP=LOC(LINEBUF);         # SAVE    #
01392  M00S01308.fsesubs +++|  PUSHTEMP;
01393  M00S01309.fsesubs +++|  PUSH;
01394  M00S01310.fsesubs +++|  P<LINEBUF>=0;
01395  M00S01311.fsesubs +++|  POSZ(CURA(AUDITCTL));      # INVISIBLY         #
01396  M00S01312.fsesubs +++|  TEMP=0;
01397  M00S01313.fsesubs +++|  WHYLE TEMP LS AUDITNEXT DO
01398  M00S01314.fsesubs +++|    BEGIN
01399  M00S01315.fsesubs +++|    P<LINEBUF>=LOC(AUDITWORD[TEMP]);   # TAKE DIRECTLY FROM QUEUE    #
01400  M00S01316.fsesubs +++|    TEMP=TEMP+LINESZ(LINEBUF);         # MEASURE, FIX EOL BITS       #
01401  M00S01317.fsesubs +++|    INS;
01402  M00S01318.fsesubs +++|    RELOCATE(+1);
01403  M00S01319.fsesubs +++|    END
01404  M00S01320.fsesubs +++|  CURA(AUDITCTL)=CURRENT;
01405  M00S01321.fsesubs +++|  P<LINEBUF>=0;
01406  M00S01322.fsesubs +++|  POP;                       # INVISIBLY         #
01407  M00S01323.fsesubs +++|  POPTEMP;
01408  M00S01324.fsesubs +++|  P<LINEBUF>=TEMP;           # RESTORE #
01409  M00S01325.fsesubs +++|  POPTEMP;
01410  M00S01326.fsesubs +++|  AUDITNEXT=0;
01411  M00S01327.fsesubs +++|  IOEND                       # OF AUDITSYNCH     #
01412  M00S01328.fsesubs +++|PAGE                         # FILE MANAGEMENT   #
01413  M00S01329.fsesubs +++|
01414  M00S01330.fsesubs +++|
01415  M00S01331.fsesubs +++|PROC FORMFDL(FILEPARM);
01416  M00S01332.fsesubs +++|  BEGIN
01417  M00S01333.fsesubs +++|#
01418  M00S01334.fsesubs +++|**        FORMFDL - FORMAT FILE DESCRIPTOR LINE.
01419  M00S01335.fsesubs +++|*
01420  M00S01336.fsesubs +++|*         FORMFDL CREATES A FILE DESCRIPTOR LINE BASED ON THE CURRENT
01421  M00S01337.fsesubs +++|*         ATTRIBUTES OF A FILE IMAGE WHICH IS ONE OF THE TWO BRACKETED
01422  M00S01338.fsesubs +++|*         FILES.  THE FORMAT OF THE FDL IS- CHARACTER POSITION 0 =
01423  M00S01339.fsesubs +++|*         FILE NAME, 8 = YES/NO FOR THE WRITE LOCKOUT, 10 = YES/NO FOR
01424  M00S01340.fsesubs +++|*         CHANGES MADE, 12 = YES/NO FOR 6/12 ASCII CHARACTER SET, 14 =
01425  M00S01341.fsesubs +++|*         YES/NO FOR NUMBERED MODE, 16 = SIZE OF FILE, AND 27 =
01426  M00S01342.fsesubs +++|*         CURRENT POSITION IN FILE.  IF THIS FORMAT IS TO BE CHANGED,
01427  M00S01343.fsesubs +++|*         CODE MUST ALSO BE CHANGED IN THE "GET STATUS" COMMAND AND IN
01428  M00S01344.fsesubs +++|*         THE SESSION RESUMPTION LOGIC OF FSEMAIN.
01429  M00S01345.fsesubs +++|*
01430  M00S01346.fsesubs +++|*         ENTRY  FILEPARM - WHICH FILE BRACKET TO SUMMARIZE.
01431  M00S01347.fsesubs +++|*
01432  M00S01348.fsesubs +++|*         EXIT   LIN - CONTAINS DESCRIPTOR TEXT.
01433  M00S01349.fsesubs +++|*
01434  M00S01350.fsesubs +++|*         MACROS SETCHAR.
01435  M00S01351.fsesubs +++|*
01436  M00S01352.fsesubs +++|*         CALLS  FORMNUM(INTERNAL).
01437  M00S01353.fsesubs +++|#
01438  M00S01354.fsesubs +++|
01439  M00S01355.fsesubs +++|  ITEM FILEPARM, TMP1,TMP2,TMP3,TMP4;
01440  M00S01356.fsesubs +++|
01441  M00S01357.fsesubs +++|  PROC FORMNUM(PARM);
01442  M00S01358.fsesubs +++|    BEGIN
01443  M00S01359.fsesubs +++|    ITEM PARM;
01444  M00S01360.fsesubs +++|    TMP4=PARM;
01445  M00S01361.fsesubs +++|    FOR TMP1=9 STEP -1 UNTIL 0 DO
01446  M00S01362.fsesubs +++|      BEGIN
01447  M00S01363.fsesubs +++|      C<TMP1,1>TMP3=MOD(TMP4,10)+O"33";
01448  M00S01364.fsesubs +++|      TMP4=TMP4/10;
01449  M00S01365.fsesubs +++|      END
01450  M00S01366.fsesubs +++|    FOR TMP1=0 STEP 1 UNTIL 9 DO
01451  M00S01367.fsesubs +++|      BEGIN
01452  M00S01368.fsesubs +++|      TMP4=C<TMP1,1>TMP3;
01453  M00S01369.fsesubs +++|      TMP4=XLTDSPINT[TMP4];
01454  M00S01370.fsesubs +++|      SETCHAR(LINE,TMP2,TMP4);
01455  M00S01371.fsesubs +++|      TMP2=TMP2+1;
01456  M00S01372.fsesubs +++|      END
01457  M00S01373.fsesubs +++|    SETCHAR(LINE,TMP2,CBLANK);
01458  M00S01374.fsesubs +++|    TMP2=TMP2+1;
01459  M00S01375.fsesubs +++|    END
01460  M00S01376.fsesubs +++|
01461  M00S01377.fsesubs +++|
01462  M00S01378.fsesubs +++|  # START OF FORMFDL #
01463  M00S01379.fsesubs +++|
01464  M00S01380.fsesubs +++|  TMP2=0;
01465  M00S01381.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
01466  M00S01382.fsesubs +++|    BEGIN
01467  M00S01383.fsesubs +++|    C<0,7>TMP3=PADNAME(FILENAM[FILEPARM]);
01468  M00S01384.fsesubs +++|    TMP3=C<TMP1,1>TMP3;
01469  M00S01385.fsesubs +++|    TMP3=XLTDSPINT[TMP3];
01470  M00S01386.fsesubs +++|    SETCHAR(LINE,TMP2,TMP3);
01471  M00S01387.fsesubs +++|    TMP2=TMP2+1;
01472  M00S01388.fsesubs +++|    END
01473  M00S01389.fsesubs +++|  FOR TMP2=7 STEP 1 UNTIL 15 DO SETCHAR(LINE,TMP2,CBLANK);
01474  M00S01390.fsesubs +++|  SETCHAR(LINE,8,LOCKED[FILEPARM]+CDIGIT0);
01475  M00S01391.fsesubs +++|  SETCHAR(LINE,10,CHANGED[FILEPARM]+CDIGIT0);
01476  M00S01392.fsesubs +++|  SETCHAR(LINE,12,ASCII[FILEPARM]+CDIGIT0);
Line S01393 Modification History
M01 (Removed by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01477  M01S01393.ns2607  ---|  SETCHAR(LINE,14,NUMBERED[FILEPARM]+CDIGIT0);
Line S00001 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01478  M01S00001.ns2607  +++|  SETCHAR(LINE,14,INITNMBR[FILEPARM]+CDIGIT0);
01479  M00S01394.fsesubs +++|  TMP2=16;
01480  M00S01395.fsesubs +++|  FORMNUM(BOTF(FILEPARM)-TOPF(FILEPARM)-1);
01481  M00S01396.fsesubs +++|  FORMNUM(CURF(FILEPARM)-TOPF(FILEPARM));
01482  M00S01397.fsesubs +++|  SETCHAR(LINE,TMP2,CENDLINE);
01483  M00S01398.fsesubs +++|
01484  M00S01399.fsesubs +++|  END                            # OF FORMFDL     #
01485  M00S01400.fsesubs +++|
01486  M00S01401.fsesubs +++|
01487  M00S01402.fsesubs +++|PROC SCANFDL(NAME);
01488  M00S01403.fsesubs +++|  BEGIN
01489  M00S01404.fsesubs +++|#
01490  M00S01405.fsesubs +++|**        SCANFDL - ANALYZE FILE DESCRIPTOR LINE.
01491  M00S01406.fsesubs +++|*
01492  M00S01407.fsesubs +++|*         ENTRY  LIN - CONTAINS FDL TEXT.
01493  M00S01408.fsesubs +++|*
01494  M00S01409.fsesubs +++|*         EXIT   NAME - FILE NAME.
01495  M00S01410.fsesubs +++|*                SCNFDLOCK, SCNFDCHNG, SCNFDASCI, SCNFDNUMB,
01496  M00S01411.fsesubs +++|*                SCNFDSIZE, SCNFDCURF - UPDATED.
01497  M00S01412.fsesubs +++|*
01498  M00S01413.fsesubs +++|*         USES   TMPLIN.
01499  M00S01414.fsesubs +++|*                CMDLIN, SCANPOS, KEYWDTYPE - WITH RESTORATION.
01500  M00S01415.fsesubs +++|*
01501  M00S01416.fsesubs +++|*         CALLS  COPYLIN, TOKEN.
01502  M00S01417.fsesubs +++|*
01503  M00S01418.fsesubs +++|*         NOTE   CALLER MUST NON-REENTRANTLY USE SCNFDXXXX.
01504  M00S01419.fsesubs +++|#
01505  M00S01420.fsesubs +++|  ITEM NAME C(7);
01506  M00S01421.fsesubs +++|  ITEM HOLDSCAN, HOLDSEARCH;
01507  M00S01422.fsesubs +++|
01508  M00S01423.fsesubs +++|  COPYLIN(CMDLIN,TMPLIN);
01509  M00S01424.fsesubs +++|  HOLDSCAN=TOKENPOS;
01510  M00S01425.fsesubs +++|  HOLDSEARCH=KEYWDTYPE;
01511  M00S01426.fsesubs +++|  COPYLIN(LIN,CMDLIN);
01512  M00S01427.fsesubs +++|  SCANPOS=0;
01513  M00S01428.fsesubs +++|  KEYWDTYPE=0;
01514  M00S01429.fsesubs +++|  TOKEN;
01515  M00S01430.fsesubs +++|  NAME=TOKENSYM;
01516  M00S01431.fsesubs +++|  KEYWDTYPE=1;
01517  M00S01432.fsesubs +++|  TOKEN;
01518  M00S01433.fsesubs +++|  SCNFDLOCK=TOKENVAL;
01519  M00S01434.fsesubs +++|  TOKEN;
01520  M00S01435.fsesubs +++|  SCNFDCHNG=TOKENVAL;
01521  M00S01436.fsesubs +++|  TOKEN;
01522  M00S01437.fsesubs +++|  SCNFDASCI=TOKENVAL;
01523  M00S01438.fsesubs +++|  TOKEN;
Line S01439 Modification History
M01 (Removed by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01524  M01S01439.ns2607  ---|  SCNFDNUMB=TOKENVAL;
Line S00002 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01525  M01S00002.ns2607  +++|  SCNFDNUMB=TOKENVAL LAN 1;
01526  M01S00003.ns2607  +++|  SCNFDINIT=TOKENVAL/2;
01527  M00S01440.fsesubs +++|  TOKEN;
01528  M00S01441.fsesubs +++|  SCNFDSIZE=TOKENVAL;
01529  M00S01442.fsesubs +++|  TOKEN;
01530  M00S01443.fsesubs +++|  SCNFDCURF=TOKENVAL;
01531  M00S01444.fsesubs +++|
01532  M00S01445.fsesubs +++|  COPYLIN(TMPLIN,CMDLIN);
01533  M00S01446.fsesubs +++|  SCANPOS=HOLDSCAN;
01534  M00S01447.fsesubs +++|  KEYWDTYPE=HOLDSEARCH;
01535  M00S01448.fsesubs +++|  TOKEN;
01536  M00S01449.fsesubs +++|
01537  M00S01450.fsesubs +++|  END                     #  OF SCANFDL     #
01538  M00S01451.fsesubs +++|
01539  M00S01452.fsesubs +++|
01540  M00S01453.fsesubs +++|PROC OPENFILE;
Line S00001 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01541  M01S00001.ns2172  +++|# TITLE OPENFILE - BRACKET AN INTERNAL FILE IMAGE. #
01542  M01S00002.ns2172  +++|
01543  M00S01454.fsesubs +++|  IOBEGIN(OPENFILE)
Line S00003 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01544  M01S00003.ns2172  +++|
01545  M00S01455.fsesubs +++|#
01546  M00S01456.fsesubs +++|**        OPENFILE - BRACKET AN INTERNAL FILE IMAGE.
01547  M00S01457.fsesubs +++|*
01548  M00S01458.fsesubs +++|*         OPENFILE GETS THE REQUESTED FILE INTO ONE OF THE INTERNAL
01549  M00S01459.fsesubs +++|*         FILE BRACKETS, BY HOOK OR BY CROOK.  VALUES OF THE
01550  M00S01460.fsesubs +++|*         CHARPARM AND GETPARM ENTRIES CAN FORCE DISPOSAL OF AN
01551  M00S01461.fsesubs +++|*         EXTANT INTERNAL FILE IMAGE WITH A FRESH FILE BUILD.
01552  M00S01462.fsesubs +++|*         FOR CASES WHERE ANY INTERNAL IMAGE IS UNACCEPTABLE, THE
01553  M00S01463.fsesubs +++|*         RESULTS OF THE FIRST OPENFILE ARE COMPARED WITH THE ENTRY
01554  M00S01464.fsesubs +++|*         CONDITIONS, AND OPENFILE MIGHT THEN BE CALLED ONCE MORE.
01555  M00S01465.fsesubs +++|*
01556  M00S01466.fsesubs +++|*         ENTRY  READNAM - FILE NAME.
01557  M00S01467.fsesubs +++|*                FILNUM - BRACKET TO OPEN INTO.
01558  M00S01468.fsesubs +++|*                CHARPARM - CHARACTER SET PREFERENCE.
01559  M00S01469.fsesubs +++|*                GETPARM - PREFERENCE FOR INTERNAL/LOCAL/PERMANENT.
01560  M00S01470.fsesubs +++|*
01561  M00S01471.fsesubs +++|*         EXIT   DESIRED FILE IS IN BRACKET.  OTHER BRACKET MAY
01562  M00S01472.fsesubs +++|*                BE NULLED OUT IF OTHER BRACKET WAS SAME AS THIS
01563  M00S01473.fsesubs +++|*                BRACKET, AND THE CURRENT BRACKET REQUIRES NULLOUT.
01564  M00S01474.fsesubs +++|*
Line S01475 Modification History
M01 (Removed by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01565  M01S01475.ns2172  ---|*         CALLS  ACCESSFILE, PUSHTEMP, POPTEMP.
Line S00004 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01566  M01S00004.ns2172  +++|*         CALLS  ACCESSFILE, FORCEPAINT, POPTEMP, PUSHTEMP.
01567  M00S01476.fsesubs +++|*
01568  M00S01477.fsesubs +++|*         USES   TEMP WITH RESTORATION.
01569  M00S01478.fsesubs +++|#
Line S01479 Modification History
M01 (Removed by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01570  M01S01479.ns2172  ---|  ACCESSFILE;                # REALLY DOES THE WORK        #
01571  M01S01480.ns2172  ---|  IF CHARPARM NQ 0 OR GETPARM GQ 2 THEN
01572  M01S01481.ns2172  ---|    BEGIN                     # MAKE SURE GOT IT RIGHT      #
01573  M01S01482.ns2172  ---|    IF GETPARM GQ 2 OR (ASCII[FILNUM] NQ CHARPARM AND
01574  M01S01483.ns2172  ---|      (ASCII[FILNUM] GQ 2 OR CHARPARM GQ 2)) THEN
01575  M01S01484.ns2172  ---|      BEGIN                   # RE-OPENED OLD FILE ...      #
01576  M01S01485.ns2172  ---|      PUSHTEMP;
01577  M01S01486.ns2172  ---|      TEMP=FILNUM;
01578  M01S01487.ns2172  ---|      FOR FILNUM=1 STEP 1 UNTIL 2 DO
01579  M01S01488.ns2172  ---|        BEGIN                # ZAP ANY BRACKETS WITH OLD FILE #
01580  M01S01489.ns2172  ---|        IF FDLF(FILNUM) EQ FDLF(TEMP) THEN
01581  M01S01490.ns2172  ---|          BEGIN
01582  M01S01491.ns2172  ---|          FILENAM[FILNUM]="ZZZNULL";
01583  M01S01492.ns2172  ---|          LOCKED[FILNUM]=1;
01584  M01S01493.ns2172  ---|          CLOSEFILE;
01585  M01S01494.ns2172  ---|          END
Line S00005 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01586  M01S00005.ns2172  +++|
01587  M01S00006.ns2172  +++|  PROC FORCEPAINT;
01588  M01S00007.ns2172  +++|# TITLE FORCEPAINT - FORCE A SCREEN PAINT. #
01589  M01S00008.ns2172  +++|
01590  M01S00009.ns2172  +++|  BEGIN  # FORCEPAINT #
01591  M01S00010.ns2172  +++|
01592  M01S00011.ns2172  +++|#
01593  M01S00012.ns2172  +++|**        FORCEPAINT - FORCE A SCREEN PAINT.
01594  M01S00013.ns2172  +++|*
01595  M01S00014.ns2172  +++|*         PROC FORCEPAINT
01596  M01S00015.ns2172  +++|*
01597  M01S00016.ns2172  +++|*         ENTRY  FILENAM[1-2] - SETUP.
01598  M01S00017.ns2172  +++|*
01599  M01S00018.ns2172  +++|*         EXIT   SCREEN REPAINTED.
01600  M01S00019.ns2172  +++|*
01601  M01S00020.ns2172  +++|*         CALLS  PAINTSPLIT.
01602  M01S00021.ns2172  +++|*
01603  M01S00022.ns2172  +++|*         USES   CURSPLIT.
01604  M01S00023.ns2172  +++|#
01605  M01S00024.ns2172  +++|
01606  M01S00025.ns2172  +++|    ITEM ONE        I=1;             # SPLIT ONE #
01607  M01S00026.ns2172  +++|    ITEM TWO        I=2;             # SPLIT TWO #
01608  M01S00027.ns2172  +++|
01609  M01S00028.ns2172  +++|    IF SCREENMODE THEN
01610  M01S00029.ns2172  +++|      BEGIN
01611  M01S00030.ns2172  +++|      IF LASTNAME[1] EQ FILENAM[FILNUM] THEN
01612  M01S00031.ns2172  +++|        BEGIN
01613  M01S00032.ns2172  +++|        TITLE1LINE[0]=NULLIN;
01614  M01S00033.ns2172  +++|        CURSPLIT = = ONE;
01615  M01S00034.ns2172  +++|        PAINTSPLIT;
01616  M01S00035.ns2172  +++|        CURSPLIT = = ONE;
01617  M01S00036.ns2172  +++|        END
01618  M01S00037.ns2172  +++|      IF LASTNAME[2] EQ FILENAM[FILNUM] THEN
01619  M01S00038.ns2172  +++|        BEGIN
01620  M01S00039.ns2172  +++|        TITLE2LINE[0]=NULLIN;
01621  M01S00040.ns2172  +++|        CURSPLIT = = TWO;
01622  M01S00041.ns2172  +++|        PAINTSPLIT;
01623  M01S00042.ns2172  +++|        CURSPLIT = = TWO;
01624  M01S00043.ns2172  +++|        END
01625  M01S00044.ns2172  +++|      END
01626  M01S00045.ns2172  +++|
01627  M01S00046.ns2172  +++|    END  # FORCEPAINT #
01628  M01S00047.ns2172  +++|
01629  M01S00048.ns2172  +++|
01630  M01S00049.ns2172  +++|  # MAIN OPENFILE CODE STARTS HERE #
01631  M01S00050.ns2172  +++|
Line S00001 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01632  M01S00001.fsesu5  +++|
01633  M01S00002.fsesu5  +++|  CONTROL IFEQ MULTI,1;
01634  M01S00003.fsesu5  +++|  IF GETPARM GQ 2 THEN GOTO QQSINGLE;  # IF GET/READ WILL BE NEEDED #
01635  M01S00004.fsesu5  +++|  CONTROL FI;
01636  M01S00005.fsesu5  +++|
Line S00051 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01637  M01S00051.ns2172  +++|  ACCESSFILE;                        # ACCESS THE FILE #
Line S00006 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01638  M01S00006.fsesu5  +++|
01639  M01S00007.fsesu5  +++|  CONTROL IFEQ SINGLE,1;
Line S00004 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01640  M01S00004.ns2607  +++|  SCNFDINIT = 0;                     # PRESET NOT INITIAL FILE #
Line S00052 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01641  M01S00052.ns2172  +++|  IF GETPARM GQ 2 THEN               # IF GET OR READ PARAMETER #
01642  M01S00053.ns2172  +++|    BEGIN
01643  M01S00054.ns2172  +++|    FORCEPAINT;
Line S00055 Modification History
M01 (Added by) ns2172
M02 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01644  M02S00055.fsesu5  ---|    PUSHTEMP;
01645  M02S00056.fsesu5  ---|    TEMP=FILNUM;
01646  M02S00057.fsesu5  ---|    FOR FILNUM=1 STEP 1 UNTIL 2 DO   # REMOVE BRACKETS FOR OLD FILE #
01647  M02S00058.fsesu5  ---|      BEGIN
01648  M02S00059.fsesu5  ---|      IF FDLF(FILNUM) EQ FDLF(TEMP) THEN
01649  M02S00060.fsesu5  ---|        BEGIN
01650  M02S00061.fsesu5  ---|        FILENAM[FILNUM]="ZZZNULL";
01651  M02S00062.fsesu5  ---|        LOCKED[FILNUM]=1;
01652  M02S00063.fsesu5  ---|        CLOSEFILE;                   # CLOSE OLD FILE #
Line S01495 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01653  M01S01495.fsesu5  ---|        END
Line S01496 Modification History
M01 (Removed by) ns2172
M02 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01654  M02S01496.fsesu5  ---|      FILNUM=TEMP;
01655  M02S01497.fsesu5  ---|      POPTEMP;
01656  M02S01498.fsesu5  ---|      LASTSIZE[1]=-1;
01657  M02S01499.fsesu5  ---|      LASTSIZE[2]=-1;
01658  M02S01500.fsesu5  ---|      ACCESSFILE;            # THIS TIME GUARANTEED RIGHT  #
Line S01501 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01659  M01S01501.fsesu5  ---|      END
Line S00064 Modification History
M01 (Added by) ns2172
M02 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01660  M02S00064.fsesu5  ---|    FILNUM=TEMP;
01661  M02S00065.fsesu5  ---|    POPTEMP;
01662  M02S00066.fsesu5  ---|    ACCESSFILE;                      # ACCESS THE OLD FILE #
Line S00008 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01663  M01S00008.fsesu5  +++|    IF FILNUM NQ 0 THEN
01664  M01S00009.fsesu5  +++|      BEGIN                          # IF FILE IS IN A BRACKET #
01665  M01S00010.fsesu5  +++|      FOR FILNUM=1 STEP 1 UNTIL 2 DO
01666  M01S00011.fsesu5  +++|        BEGIN                        # REMOVE BRACKETS FOR OLD FILE #
01667  M01S00012.fsesu5  +++|        IF FDLF(FILNUM) EQ FDLF(CURFILE) THEN
01668  M01S00013.fsesu5  +++|          BEGIN
Line S00005 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01669  M01S00005.ns2607  +++|          SCNFDINIT == INITFILE[FILNUM];   # CLEAR/SET INITIAL FILE #
Line S00014 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01670  M01S00014.fsesu5  +++|          FILENAM[FILNUM]="ZZZNULL";
01671  M01S00015.fsesu5  +++|          LOCKED[FILNUM]=1;
01672  M01S00016.fsesu5  +++|          CLOSEFILE;                 # CLOSE OLD FILE #
01673  M01S00017.fsesu5  +++|          END
01674  M01S00018.fsesu5  +++|        END
01675  M01S00019.fsesu5  +++|      FILNUM = 0;                    # INDICATE FILE ACCESS NEEDED #
01676  M01S00020.fsesu5  +++|      END
01677  M00S01502.fsesubs +++|    END
Line S00021 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01678  M01S00021.fsesu5  +++|  IF FILNUM EQ 0 THEN
01679  M01S00022.fsesu5  +++|    BEGIN                            # IF FILE ACCESS NEEDED #
01680  M01S00023.fsesu5  +++|    FILNUM = CURFILE;
01681  M01S00024.fsesu5  +++|    ADDFILE;                         # ACCESS THE FILE #
01682  M01S00025.fsesu5  +++|    END
01683  M01S00026.fsesu5  +++|  CONTROL FI;
01684  M01S00027.fsesu5  +++|
Line S01503 Modification History
M01 (Removed by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01685  M01S01503.ns2172  ---|  IOEND                       # OF OPENFILE       #
Line S00067 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01686  M01S00067.ns2172  +++|  IF ASCII[FILNUM] NQ CHARPARM AND CHARPARM NQ 0 THEN
01687  M01S00068.ns2172  +++|    BEGIN                            # IF CHARACTER SET CHANGED #
01688  M01S00069.ns2172  +++|    FORCEPAINT;
Line S00028 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01689  M01S00028.fsesu5  +++|    PUSHTEMP;
Line S00070 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01690  M01S00070.ns2172  +++|    FOR TEMP = 1 STEP 1 UNTIL 2 DO   # IF SPLIT IS USED THEN RESET #
01691  M01S00071.ns2172  +++|      BEGIN
01692  M01S00072.ns2172  +++|      IF FDLF(TEMP) EQ FDLF(FILNUM) THEN ASCII[TEMP]=CHARPARM;
01693  M01S00073.ns2172  +++|      END
Line S00029 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01694  M01S00029.fsesu5  +++|    POPTEMP;
Line S00074 Modification History
M01 (Added by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01695  M01S00074.ns2172  +++|    END
01696  M01S00075.ns2172  +++|
01697  M01S00076.ns2172  +++|  IOEND  # OPENFILE #
01698  M00S01504.fsesubs +++|
01699  M00S01505.fsesubs +++|
01700  M00S01506.fsesubs +++|PROC ACCESSFILE;
01701  M00S01507.fsesubs +++|  IOBEGIN(ACCESSFILE)
01702  M00S01508.fsesubs +++|#
01703  M00S01509.fsesubs +++|**        ACCESSFILE - ACCESS A FILE.
01704  M00S01510.fsesubs +++|*
01705  M00S01511.fsesubs +++|*        ACCESSFILE ATTEMPTS TO LOGICALLY OPEN A FILE BY IDENTIFYING
01706  M00S01512.fsesubs +++|*        IT AS ALREADY OPEN IN ONE OR BOTH FILE BRACKETS, OR AS
01707  M00S01513.fsesubs +++|*        AVAILABLE FOR QUICK OPEN FROM THE FILE DIRECTORY LINES.  IF
Line S01514 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01708  M01S01514.fsesu5  ---|*        THESE METHODS FAIL THEN WE CALL ADDFILE.  NOTE THAT THERE
01709  M01S01515.fsesu5  ---|*        CAN BE SITUATIONS WHERE THE USER ACTUALLY WANTS THE FILE
01710  M01S01516.fsesu5  ---|*        BRACKETS AND DIRECTORY IGNORED SO THAT ADDFILE WILL BE
01711  M01S01517.fsesu5  ---|*        CALLED TO READ THE LOCAL FILE AFRESH.  TO ALLOW FOR THIS,
01712  M01S01518.fsesu5  ---|*        THE RULE IS THAT ACCESSFILE IS ONLY CALLED BY OPENFILE, AND
01713  M01S01519.fsesu5  ---|*        THE USER ALWAYS USES OPENFILE.  OPENFILE IS THEN CONSIDERED
01714  M01S01520.fsesu5  ---|*        RESPONSIBLE TO HANDLE OVERRIDE.
Line S00030 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01715  M01S00030.fsesu5  +++|*        THESE METHODS FAIL, THE MULTI-USER EDITOR PASSES CONTROL TO
01716  M01S00031.fsesu5  +++|*        THE SINGLE-USER EDITOR VIA *QQSINGLE*, WHEREUPON THE SINGLE-
01717  M01S00032.fsesu5  +++|*        USER EDITOR WILL WORK IT-S WAY TO THIS POINT BY REPROCESSING
01718  M01S00033.fsesu5  +++|*        THE SAME COMMAND.  THE SINGLE-USER EDITOR NOTES THAT THE FILE
01719  M01S00034.fsesu5  +++|*        WAS NOT FOUND BY ZEROING THE FILE NUMBER.  *OPENFILE* WILL
01720  M01S00035.fsesu5  +++|*        RECOGNIZE THAT AS AN INDICATION THAT *ADDFILE* MUST BE CALLED
01721  M01S00036.fsesu5  +++|*        TO GET AND/OR READ THE FILE.
01722  M00S01521.fsesubs +++|*
01723  M00S01522.fsesubs +++|*         ENTRY  SEE OPENFILE.
01724  M00S01523.fsesubs +++|*
Line S01524 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01725  M01S01524.fsesu5  ---|*         EXIT   ALL FILE BRACKET STRUCTURES UPDATED.
Line S00037 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01726  M01S00037.fsesu5  +++|*         EXIT   IF FILE FOUND, ALL FILE BRACKET STRUCTURES UPDATED.
01727  M01S00038.fsesu5  +++|*                IF NOT, MULTI-USER EDITOR EXITS TO SINGLE-USER EDITOR,
01728  M01S00039.fsesu5  +++|*                        SINGLE-USER RETURNS ZERO IN FILNUM.
01729  M00S01525.fsesubs +++|*
Line S01526 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01730  M01S01526.fsesu5  ---|*         CALLS  PADNAME, CLOSEFILE, PUSHTEMP, POPTEMP, QQSINGLE,
01731  M01S01527.fsesu5  ---|*                POSZ, PUSH, POP, SCANFDL, NOPOP, ADDFILE.
01732  M01S01528.fsesu5  ---|*
01733  M01S01529.fsesu5  ---|*         NOTE   IN MULTI-USER MODE, THIS ROUTINE IS CAPABLE OF
01734  M01S01530.fsesu5  ---|*                ACCESSING AN EXTANT INTERNAL FILE IMAGE, BUT CANNOT
01735  M01S01531.fsesu5  ---|*                READ LOCAL FILES WHEN NEEDED.  QQSINGLE IS THEN CALLED
01736  M01S01532.fsesu5  ---|*                TO WORK OUR WAY INTO THE SAME CODE IN THE SINGLE-USER
01737  M01S01533.fsesu5  ---|*                EDITOR VIA REDUNDANT PROCESSING OF SAME COMMAND.
01738  M01S01534.fsesu5  ---|*                THIS RESTRICTS THE MULTI-USER CALLER TO BE A
01739  M01S01535.fsesu5  ---|*                BONA-FIDE COMMAND PROCESSOR, OR TO HAVE ABSOLUTE
01740  M01S01536.fsesu5  ---|*                CONFIDENCE THAT AN INTERNAL IMAGE IS AVAILABLE.
Line S00040 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01741  M01S00040.fsesu5  +++|*         CALLS  ADDFILE, CLOSEFILE, NOPOP, PADNAME, POP, POPTEMP,
01742  M01S00041.fsesu5  +++|*                POSZ, PUSH, PUSHTEMP, QQSINGLE, SCANFDL.
01743  M00S01537.fsesubs +++|#
01744  M00S01538.fsesubs +++|  ITEM NAME1 C(7), NAME2 C(7);  # USE INSTANTLY #
01745  M00S01539.fsesubs +++|
01746  M00S01540.fsesubs +++|  CURFILE=FILNUM;
01747  M00S01541.fsesubs +++|
01748  M00S01542.fsesubs +++|  NAME1=PADNAME(READNAM);
01749  M00S01543.fsesubs +++|  NAME2=PADNAME(FILENAM[FILNUM]);
01750  M00S01544.fsesubs +++|  IF NAME2 NQ " " AND NAME1 NQ NAME2 THEN CLOSEFILE;
01751  M00S01545.fsesubs +++|
01752  M00S01546.fsesubs +++|  PUSHTEMP;
01753  M00S01547.fsesubs +++|  FOR TEMP=1 STEP 1 UNTIL 2 DO
01754  M00S01548.fsesubs +++|    BEGIN
01755  M00S01549.fsesubs +++|    NAME1=PADNAME(READNAM);  # RECOMPUTE SINCE REENTERED   #
01756  M00S01550.fsesubs +++|    NAME2=PADNAME(FILENAM[TEMP]);
01757  M00S01551.fsesubs +++|    IF NAME1 EQ NAME2 THEN
01758  M00S01552.fsesubs +++|      BEGIN
01759  M00S01553.fsesubs +++|      IF TEMP NQ FILNUM THEN
01760  M00S01554.fsesubs +++|        BEGIN
01761  M00S01555.fsesubs +++|        FILEATTR[FILNUM] = FILEATTR[TEMP];
01762  M00S01556.fsesubs +++|        TOPF(FILNUM) = TOPF(TEMP);
01763  M00S01557.fsesubs +++|        BOTF(FILNUM) = BOTF(TEMP);
01764  M00S01558.fsesubs +++|        CURF(FILNUM) = CURF(TEMP);
01765  M00S01559.fsesubs +++|        FDLF(FILNUM) = FDLF(TEMP);
01766  M00S01560.fsesubs +++|        END
01767  M00S01561.fsesubs +++|      POSZ(CURF(FILNUM));
01768  M00S01562.fsesubs +++|      POPTEMP;
01769  M00S01563.fsesubs +++|      IORET
01770  M00S01564.fsesubs +++|      END
01771  M00S01565.fsesubs +++|    END
01772  M00S01566.fsesubs +++|  POPTEMP;
01773  M00S01567.fsesubs +++|
01774  M00S01568.fsesubs +++|  FILNUM=FILNUM LXR 3;       # REVERSE VALUE #
01775  M00S01569.fsesubs +++|  NAME1=PADNAME(FILENAM[FILNUM]);
01776  M00S01570.fsesubs +++|  IF NAME1 NQ " " THEN CLOSEFILE;      # ASSURES FDL UP TO DATE #
01777  M00S01571.fsesubs +++|  FILNUM=FILNUM LXR 3;       # RESTORE VALUE #
01778  M00S01572.fsesubs +++|
01779  M00S01573.fsesubs +++|  PUSH;
01780  M00S01574.fsesubs +++|  POSZ(TOPC(FILECTL)+1);
01781  M00S01575.fsesubs +++|  LINENO=BOTC(FILECTL);
01782  M00S01576.fsesubs +++|  WHYLE CURRENT LS BOTC(FILECTL) DO
01783  M00S01577.fsesubs +++|    BEGIN
01784  M00S01578.fsesubs +++|    # ONCE SCANFDL IS CALLED MUST USE RESULTS INSTANTLY #
01785  M00S01579.fsesubs +++|    SCANFDL(NAME2);
01786  M00S01580.fsesubs +++|    NAME1=PADNAME(READNAM);  # RECOMPUTE SINCE REENTERED   #
01787  M00S01581.fsesubs +++|    IF NAME2 EQ NAME1 THEN
01788  M00S01582.fsesubs +++|      BEGIN
01789  M00S01583.fsesubs +++|      FILENAM[FILNUM]=TRIMNAME(NAME2);
Line S00006 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01790  M01S00006.ns2607  +++|      INITFILE[FILNUM]=SCNFDINIT;
01791  M00S01584.fsesubs +++|      LOCKED[FILNUM]=SCNFDLOCK;
01792  M00S01585.fsesubs +++|      CHANGED[FILNUM]=SCNFDCHNG;
01793  M00S01586.fsesubs +++|      ASCII[FILNUM]=SCNFDASCI;
01794  M00S01587.fsesubs +++|      NUMBERED[FILNUM]=SCNFDNUMB;
01795  M00S01588.fsesubs +++|      TOPF(FILNUM)=LINENO;
01796  M00S01589.fsesubs +++|      BOTF(FILNUM)=LINENO+1+SCNFDSIZE;
01797  M00S01590.fsesubs +++|      CURF(FILNUM)=TOPF(FILNUM)+SCNFDCURF;
01798  M00S01591.fsesubs +++|      FDLF(FILNUM)=CURRENT;
01799  M00S01592.fsesubs +++|      POSZ(CURF(FILNUM));
01800  M00S01593.fsesubs +++|      NOPOP;
01801  M00S01594.fsesubs +++|      IORET
01802  M00S01595.fsesubs +++|      END
01803  M00S01596.fsesubs +++|    LINENO=LINENO+1+SCNFDSIZE;
01804  M00S01597.fsesubs +++|    # END OF INSTANTANEOUS COMPUTATION #
01805  M00S01598.fsesubs +++|    FWDZ;
01806  M00S01599.fsesubs +++|    END
01807  M00S01600.fsesubs +++|  POP;
01808  M00S01601.fsesubs +++|
01809  M00S01602.fsesubs +++|  CONTROL IFEQ SINGLE,1;
Line S01603 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01810  M01S01603.fsesu5  ---|    ADDFILE;
Line S00042 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01811  M01S00042.fsesu5  +++|  FILNUM = 0;                        # INDICATE FILE ACCESS NEEDED #
01812  M00S01604.fsesubs +++|  CONTROL FI;
01813  M00S01605.fsesubs +++|  CONTROL IFEQ MULTI,1;
Line S01606 Modification History
M01 (Removed by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01814  M01S01606.fsesu5  ---|    GOTO QQSINGLE;
Line S00043 Modification History
M01 (Added by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01815  M01S00043.fsesu5  +++|  GOTO QQSINGLE;                     # EXIT TO SINGLE-USER EDITOR #
01816  M00S01607.fsesubs +++|  CONTROL FI;
01817  M00S01608.fsesubs +++|
01818  M00S01609.fsesubs +++| IOEND                        # OF ACCESSFILE     #
01819  M00S01610.fsesubs +++|
01820  M00S01611.fsesubs +++|
01821  M00S01612.fsesubs +++|PROC CLOSEFILE;
01822  M00S01613.fsesubs +++|  IOBEGIN(CLOSEFILE)
01823  M00S01614.fsesubs +++|#
01824  M00S01615.fsesubs +++|**        CLOSEFILE - SAVE CURRENT FILE STATUS IN DESCRIPTOR LINE.
01825  M00S01616.fsesubs +++|*
01826  M00S01617.fsesubs +++|*         ENTRY  FILNUM - BRACKET TO CLOSE.
01827  M00S01618.fsesubs +++|*                ALL BRACKET STRUCTURES CONTAIN VALID STATUS.
01828  M00S01619.fsesubs +++|*
01829  M00S01620.fsesubs +++|*         EXIT   FILE DESCRIPTOR LINE UPDATED INTO FILE DIRECTORY.
01830  M00S01621.fsesubs +++|*
01831  M00S01622.fsesubs +++|*         CALLS  PUSH, POP, POSZ, REPY, FORMFDL.
01832  M00S01623.fsesubs +++|*
01833  M00S01624.fsesubs +++|*         NOTE   IF BOTH BRACKETS OPEN TO SAME FILE, CERTAIN
01834  M00S01625.fsesubs +++|*                ATTRIBUTES MUST BE MERGED.
01835  M00S01626.fsesubs +++|#
01836  M00S01627.fsesubs +++|  PUSH;
01837  M00S01628.fsesubs +++|  POSZ(FDLF(FILNUM));
01838  M00S01629.fsesubs +++|  IF FDLF(1) EQ FDLF(2) THEN
01839  M00S01630.fsesubs +++|    BEGIN
Line S00007 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01840  M01S00007.ns2607  +++|    INITFILE[1]=INITFILE[1] LOR INITFILE[2];
01841  M00S01631.fsesubs +++|    LOCKED[1]=LOCKED[1] LOR LOCKED[2];
01842  M00S01632.fsesubs +++|    CHANGED[1]=CHANGED[1] LOR CHANGED[2];
Line S00008 Modification History
M01 (Added by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01843  M01S00008.ns2607  +++|    INITFILE[2]=INITFILE[1];
01844  M00S01633.fsesubs +++|    LOCKED[2]=LOCKED[1];
01845  M00S01634.fsesubs +++|    CHANGED[2]=CHANGED[1];
01846  M00S01635.fsesubs +++|    END
01847  M00S01636.fsesubs +++|  FORMFDL(FILNUM);
01848  M00S01637.fsesubs +++|  REPY;
01849  M00S01638.fsesubs +++|  PUSHTEMP;
01850  M00S01639.fsesubs +++|  IF FILENAM[FILNUM] NQ "ZZZNULL" THEN
01851  M00S01640.fsesubs +++|    BEGIN
01852  M00S01641.fsesubs +++|    FOR TEMP=2 STEP 1 UNTIL 4 DO
01853  M00S01642.fsesubs +++|      BEGIN
01854  M00S01643.fsesubs +++|      NONTRIVFILE[FILNUM,TEMP]=NONTRIVFILE[FILNUM,TEMP-1];
01855  M00S01644.fsesubs +++|      END
01856  M00S01645.fsesubs +++|    NONTRIVFILE[FILNUM,1]=FDLF(FILNUM);
01857  M00S01646.fsesubs +++|    END
01858  M00S01647.fsesubs +++|  ELSE
01859  M00S01648.fsesubs +++|    BEGIN
01860  M00S01649.fsesubs +++|    FOR TEMP=1 STEP 1 UNTIL 4 DO
01861  M00S01650.fsesubs +++|      BEGIN
01862  M00S01651.fsesubs +++|      IF NONTRIVFILE[1,TEMP] EQ FDLF(FILNUM)
01863  M00S01652.fsesubs +++|        THEN NONTRIVFILE[1,TEMP]=0;
01864  M00S01653.fsesubs +++|      IF NONTRIVFILE[2,TEMP] EQ FDLF(FILNUM)
01865  M00S01654.fsesubs +++|        THEN NONTRIVFILE[2,TEMP]=0;
01866  M00S01655.fsesubs +++|      END
01867  M00S01656.fsesubs +++|    END
01868  M00S01657.fsesubs +++|  POPTEMP;
01869  M00S01658.fsesubs +++|  POP;
01870  M00S01659.fsesubs +++|
01871  M00S01660.fsesubs +++|  IOEND                         # OF CLOSEFILE   #
01872  M00S01661.fsesubs +++|PAGE                         # MISC IO ROUTINES  #
01873  M00S01662.fsesubs +++|
01874  M00S01663.fsesubs +++|
01875  M00S01664.fsesubs +++|PROC GETCMD;
01876  M00S01665.fsesubs +++|  IOBEGIN(GETCMD)
01877  M00S01666.fsesubs +++|#
01878  M00S01667.fsesubs +++|**        GETCMD - READ COMMAND STRING FROM TERMINAL.
01879  M00S01668.fsesubs +++|*
01880  M00S01669.fsesubs +++|*         EXIT   CMDLIN - TERMINAL INPUT LINE, CONVERTED TO
01881  M00S01670.fsesubs +++|*                    INTERNAL CHARSET FROM 6/12 ASCII.
01882  M00S01671.fsesubs +++|*
01883  M00S01672.fsesubs +++|*         CALLS  PROMPT, CONVIN.
01884  M00S01673.fsesubs +++|*
01885  M00S01674.fsesubs +++|*         NOTE   SHOULD BE USED ONLY IN LINE-EDITING.
01886  M00S01675.fsesubs +++|#
01887  M00S01676.fsesubs +++|  PROMPT(QCCKWRD);
01888  M00S01677.fsesubs +++|  CONVIN(CMDLIN,2);
01889  M00S01678.fsesubs +++|  IOEND                        # OF GETCMD         #
01890  M00S01679.fsesubs +++|
01891  M00S01680.fsesubs +++|
01892  M00S01681.fsesubs +++|PROC PROMPT(STR);
01893  M00S01682.fsesubs +++|  IOBEGIN(PROMPT)
01894  M00S01683.fsesubs +++|#
01895  M00S01684.fsesubs +++|**        PROMPT - ISSUE PROMPT TO TERMINAL AND INPUT LINE.
01896  M00S01685.fsesubs +++|*
01897  M00S01686.fsesubs +++|*         ENTRY  STR - PROMPT STRING, 6/12 ASCII CHARSET.
01898  M00S01687.fsesubs +++|*
01899  M00S01688.fsesubs +++|*         EXIT   TMPLIN - INPUT FROM TERMINAL.
01900  M00S01689.fsesubs +++|*
01901  M00S01690.fsesubs +++|*         CALLS  TTLIN, TTSYNC, VDTRDC, VDTDRN$.
01902  M00S01691.fsesubs +++|*
01903  M00S01692.fsesubs +++|*         NOTE   SHOULD BE USED ONLY IN LINE-EDITING.
01904  M00S01693.fsesubs +++|#
01905  M00S01694.fsesubs +++|  ITEM STR C(10);
Line S01695 Modification History
M01 (Removed by) ns2132
Seq #  *Modification Id* Act 
----------------------------+
01906  M01S01695.ns2132  ---|  TTLIN(STR);
Line S00001 Modification History
M01 (Added by) ns2132
Seq #  *Modification Id* Act 
----------------------------+
01907  M01S00001.ns2132  +++|  CONTROL IFEQ SINGLE,1;
01908  M01S00002.ns2132  +++|    IF INTERACT THEN TTLIN(STR);
01909  M01S00003.ns2132  +++|    ELSE TTLIN(NULLWRD);
01910  M01S00004.ns2132  +++|  CONTROL FI;
01911  M01S00005.ns2132  +++|  CONTROL IFEQ MULTI,1;
01912  M01S00006.ns2132  +++|    TTLIN(STR);
01913  M01S00007.ns2132  +++|  CONTROL FI;
01914  M00S01696.fsesubs +++|  TTSYNC;
01915  M00S01697.fsesubs +++|  VDTRDC(TMPLIN,BUFWID2P1);
01916  M00S01698.fsesubs +++|  IOEND                       # OF PROMPT         #
01917  M00S01699.fsesubs +++|
01918  M00S01700.fsesubs +++|
Line S01701 Modification History
M01 (Removed by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01919  M01S01701.ns2571  ---|PROC DOJOIN;
Line S00001 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01920  M01S00001.ns2571  +++|PROC DOJOIN(SETJUMP);
01921  M00S01702.fsesubs +++|  IOBEGIN(DOJOIN)
01922  M00S01703.fsesubs +++|#
01923  M00S01704.fsesubs +++|**        DOJOIN - MERGE TWO ADJACENT WORKFILE LINES.
01924  M00S01705.fsesubs +++|*
01925  M00S01706.fsesubs +++|*         ENTRY  CURRENT - POINTS AT FIRST WORKFILE LINE.
01926  M00S01707.fsesubs +++|*                CHRPTR3 - CHARACTER POSITION TO MERGE AT.
Line S00002 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01927  M01S00002.ns2571  +++|*                SETJUMP - IF NONZERO, REMOVE LEADING SPACES ON SECOND
01928  M01S00003.ns2571  +++|*                          LINE TO BE JOINED IF AUTOINDENTING.
01929  M00S01708.fsesubs +++|*                NUMBERED[CURFILE] - INDICATES SEQUENCE MODE.
01930  M00S01709.fsesubs +++|*
01931  M00S01710.fsesubs +++|*         EXIT   LIN - COPY OF WHAT IS MERGED IN FILE.
01932  M00S01711.fsesubs +++|*
Line S01712 Modification History
M01 (Removed by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01933  M01S01712.ns2571  ---|*         MACROS SETCHAR.
Line S00004 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01934  M01S00004.ns2571  +++|*         MACROS GETCHAR, SETCHAR.
01935  M00S01713.fsesubs +++|*
Line S01714 Modification History
M01 (Removed by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01936  M01S01714.ns2571  ---|*         CALLS  FWDZ, TRIMPAD, LSHIFT, COPYLIN, BAKZ, EXTENDC,
01937  M01S01715.ns2571  ---|*                CONCAT, REPX, PUSH, DELX, POP.
Line S00005 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01938  M01S00005.ns2571  +++|*         CALLS  BAKZ, CONCAT, COPYLIN, DELX, EXTENDC, FWDZ, LSHIFT,
01939  M01S00006.ns2571  +++|*                POP, POPTEMP, PUSH, PUSHTEMP, REPX, TRIMPAD.
01940  M00S01716.fsesubs +++|*
01941  M00S01717.fsesubs +++|*         USES   TTYLIN.
01942  M00S01718.fsesubs +++|#
Line S00007 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01943  M01S00007.ns2571  +++|  ITEM SETJUMP;
01944  M01S00008.ns2571  +++|  ITEM TMP1, TMP2;           # USE INSTANTLY      #
01945  M01S00009.ns2571  +++|
01946  M00S01719.fsesubs +++|  IF CURRENT LS BOTF(CURFILE)-1 THEN # CAN DO IT         #
01947  M00S01720.fsesubs +++|    BEGIN
Line S00010 Modification History
M01 (Added by) ns2571
Seq #  *Modification Id* Act 
----------------------------+
01948  M01S00010.ns2571  +++|    PUSHTEMP;
01949  M01S00011.ns2571  +++|    IF AUTOINDENT THEN TEMP = SETJUMP; ELSE TEMP = 0;
01950  M01S00012.ns2571  +++|    # END OF NON-REENTRANT PARAMETER USAGE #
01951  M00S01721.fsesubs +++|    FWDZ;                    # READ SECOND HALF  #
Line S01722 Modification History
M01 (Removed by) ns2226
Seq #  *Modification Id* Act 
----------------------------+
01952  M01S01722.ns2226  ---|    SETCHAR(LINE,EDITFIELD,CENDLINE);  # KILL PROTECTED    #
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/fsesubs.txt · Last modified: (external edit)