User Tools

Site Tools


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

Deck FSESUBS

18 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.fsesubs +++|PROC FSESUBS;
00002  M01S00002.fsesubs +++|  BEGIN
00003  M01S00003.fsesubs +++|
00004  M01S00004.fsesubs +++|
00005  M01S00005.fsesubs +++|#
00006  M01S00006.fsesubs +++|***       FSESUBS -- SUBROUTINES OF FULL SCREEN EDITOR.
00007  M01S00007.fsesubs +++|*
Line S00008 Modification History
M01 (Added by) fsesubs
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00008  M02S00008.281l803 ---|*         COPYRIGHT CONTROL DATA CORPORATION, 1983.
00009  M01S00001.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00010  M01S00009.fsesubs +++|*
00011  M01S00010.fsesubs +++|*         FSESUBS PROVIDES SUBROUTINES WHICH ARE UNIVERSAL TO THE
00012  M01S00011.fsesubs +++|*         SINGLE AND MULTI-USER VERSIONS OF THE EDITOR, AND WHICH ARE
00013  M01S00012.fsesubs +++|*         ALSO REGARDED AS LIKELY TO BE UNIVERSAL TO ALL OVERLAYS IF
00014  M01S00013.fsesubs +++|*         THE SINGLE-USER EDITOR WERE TO BE CONVERTED INTO AN OVERLAY
00015  M01S00014.fsesubs +++|*         STRUCTURE.  FSESUBS SPECIFICALLY INCLUDES THE INTERFACES BY
00016  M01S00015.fsesubs +++|*         WHICH THE WORKFILE MANAGER IS CALLED, AND INTERFACES FOR
00017  M01S00016.fsesubs +++|*         MANAGEMENT OF THE AUDIT TRAIL AND OF INTERNAL FILE IMAGES.
00018  M01S00017.fsesubs +++|#
00019  M01S00018.fsesubs +++|
00020  M01S00019.fsesubs +++|  DEF LISTCON #0#;
00021  M01S00020.fsesubs +++|
00022  M01S00021.fsesubs +++|CONTROL EJECT;                         # UNIVERSAL DECLARES          #
00023  M01S00022.fsesubs +++|
00024  M01S00023.fsesubs +++|*IFCALL SINGLE,COMFSGL
00025  M01S00024.fsesubs +++|*IFCALL ONLY,COMFONL
00026  M01S00025.fsesubs +++|*IFCALL MULTI,COMFMLT
00027  M01S00026.fsesubs +++|*CALL COMFFSE
00028  M01S00027.fsesubs +++|
00029  M01S00028.fsesubs +++|                             # EXTERNAL REF'S AND DEF'S    #
00030  M01S00029.fsesubs +++|
00031  M01S00030.fsesubs +++|
00032  M01S00031.fsesubs +++|CONTROL IFEQ MULTI,1;
00033  M01S00032.fsesubs +++|  XREF ARRAY RENTSTK [1:MAXREENT];     # SUBROUTINE STACK  #
00034  M01S00033.fsesubs +++|    BEGIN
00035  M01S00034.fsesubs +++|    ITEM RSTK;
00036  M01S00035.fsesubs +++|    END
00037  M01S00036.fsesubs +++|  XREF ITEM RSTKPTR;
00038  M01S00037.fsesubs +++|CONTROL FI;
00039  M01S00038.fsesubs +++|
00040  M01S00039.fsesubs +++|XDEF ITEM LINSIZ=BUFWIDP1;   # MAX LINE SIZ IN WORDS       #
00041  M01S00040.fsesubs +++|
00042  M01S00041.fsesubs +++|XDEF
00043  M01S00042.fsesubs +++|  BEGIN
00044  M01S00043.fsesubs +++|*CALL COMFXSB
00045  M01S00044.fsesubs +++|  END
00046  M01S00045.fsesubs +++|
00047  M01S00046.fsesubs +++|XREF
00048  M01S00047.fsesubs +++|  BEGIN
00049  M01S00048.fsesubs +++|*CALL COMFXED
00050  M01S00049.fsesubs +++|*CALL COMFXSC
00051  M01S00050.fsesubs +++|*CALL COMFXTI
00052  M01S00051.fsesubs +++|*CALL COMFXFO
00053  M01S00052.fsesubs +++|*CALL COMFXVT
00054  M01S00053.fsesubs +++|*CALL COMFXWK
00055  M01S00054.fsesubs +++|  PROC ZEROWD;
00056  M01S00055.fsesubs +++|  PROC WRITER;
00057  M01S00056.fsesubs +++|  PROC ABORT;
00058  M01S00057.fsesubs +++|  PROC ENDRUN;
00059  M01S00058.fsesubs +++|  PROC FASTCAI;
00060  M01S00059.fsesubs +++|  PROC FASTCNI;
00061  M01S00060.fsesubs +++|  FUNC LENGTH;
00062  M01S00061.fsesubs +++|  PROC FASTCAO;
00063  M01S00062.fsesubs +++|  PROC FASTCNO;
00064  M01S00063.fsesubs +++|  PROC FASTRLC;
00065  M01S00064.fsesubs +++|  FUNC FASTLNB;
00066  M01S00065.fsesubs +++|  FUNC NOSWDSZ;
00067  M01S00066.fsesubs +++|  PROC MOVEWD;
00068  M01S00067.fsesubs +++|  FUNC LINESZ;
00069  M01S00068.fsesubs +++|  FUNC MOVELN;
00070  M01S00069.fsesubs +++|  CONTROL IFEQ MULTI,1;
00071  M01S00070.fsesubs +++|    LABEL QQSINGLE;
00072  M01S00071.fsesubs +++|    PROC VOLUNTEER;
00073  M01S00072.fsesubs +++|    PROC FATALTRAP;
00074  M01S00073.fsesubs +++|    PROC SMFRCL;
00075  M01S00074.fsesubs +++|    PROC SMFDLY;
00076  M01S00075.fsesubs +++|  CONTROL FI;
00077  M01S00076.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00078  M01S00077.fsesubs +++|*CALL COMFXFL
00079  M01S00078.fsesubs +++|    PROC MESSAGE;
00080  M01S00079.fsesubs +++|    PROC CSETA;
00081  M01S00080.fsesubs +++|    PROC CSETN;
00082  M01S00081.fsesubs +++|    PROC WRITEC;
00083  M01S00082.fsesubs +++|    PROC READC;
00084  M01S00083.fsesubs +++|    PROC EVICT;
00085  M01S00084.fsesubs +++|    PROC GETJN;
00086  M01S00085.fsesubs +++|    PROC RTIME;
00087  M01S00086.fsesubs +++|    PROC RETERN;
00088  M01S00087.fsesubs +++|  CONTROL FI;
00089  M01S00088.fsesubs +++|  END                          # OF XREF #
00090  M01S00089.fsesubs +++|
00091  M01S00090.fsesubs +++|                             # COMMON DATA AREAS #
00092  M01S00091.fsesubs +++|
00093  M01S00092.fsesubs +++|*CALL COMFDS1
00094  M01S00093.fsesubs +++|*CALL COMFVD2
00095  M01S00094.fsesubs +++|*CALL COMFDS2
00096  M01S00095.fsesubs +++|
00097  M01S00096.fsesubs +++|*CALL COMFTAB
00098  M01S00097.fsesubs +++|PAGE                         # MINOR UTILITY ROUTINES      #
00099  M01S00098.fsesubs +++|
00100  M01S00099.fsesubs +++|
00101  M01S00100.fsesubs +++|FUNC TRIMNAME(NAME) C(7);
00102  M01S00101.fsesubs +++|  BEGIN
00103  M01S00102.fsesubs +++|#
00104  M01S00103.fsesubs +++|**        TRIMNAME - CONVERT TRAILING BLANKS TO ZEROS.
00105  M01S00104.fsesubs +++|*
00106  M01S00105.fsesubs +++|*         ENTRY  (NAME) - LEFT-JUSTIFIED STRING UP TO SEVEN CHARS.
00107  M01S00106.fsesubs +++|*
00108  M01S00107.fsesubs +++|*         EXIT   (NAME) - CONVERTED.
00109  M01S00108.fsesubs +++|#
00110  M01S00109.fsesubs +++|  ITEM NAME C(7), TMP1, NEWNAME C(7);
00111  M01S00110.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
00112  M01S00111.fsesubs +++|    BEGIN
00113  M01S00112.fsesubs +++|    IF C<TMP1,1>NAME EQ " " THEN C<TMP1,1>NEWNAME=0;
00114  M01S00113.fsesubs +++|    ELSE C<TMP1,1>NEWNAME=C<TMP1,1>NAME;
00115  M01S00114.fsesubs +++|    END
00116  M01S00115.fsesubs +++|  TRIMNAME=NEWNAME;
00117  M01S00116.fsesubs +++|  END
00118  M01S00117.fsesubs +++|
00119  M01S00118.fsesubs +++|
00120  M01S00119.fsesubs +++|FUNC PADNAME(NAME) C(7);
00121  M01S00120.fsesubs +++|  BEGIN
00122  M01S00121.fsesubs +++|#
00123  M01S00122.fsesubs +++|**        PADNAME - CONVERT TRAILING ZEROS TO BLANKS.
00124  M01S00123.fsesubs +++|*
00125  M01S00124.fsesubs +++|*         ENTRY  (NAME) - LEFT-JUSTIFIED STRING UP TO SEVEN CHARS.
00126  M01S00125.fsesubs +++|*
00127  M01S00126.fsesubs +++|*         EXIT   (NAME) - CONVERTED.
00128  M01S00127.fsesubs +++|#
00129  M01S00128.fsesubs +++|  ITEM NAME C(7), TMP1, NEWNAME C(7);
00130  M01S00129.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
00131  M01S00130.fsesubs +++|    BEGIN
00132  M01S00131.fsesubs +++|    IF C<TMP1,1>NAME EQ 0 THEN C<TMP1,1>NEWNAME=" ";
00133  M01S00132.fsesubs +++|    ELSE C<TMP1,1>NEWNAME=C<TMP1,1>NAME;
00134  M01S00133.fsesubs +++|    END
00135  M01S00134.fsesubs +++|  PADNAME=NEWNAME;
00136  M01S00135.fsesubs +++|  END
00137  M01S00136.fsesubs +++|
00138  M01S00137.fsesubs +++|
00139  M01S00138.fsesubs +++|FUNC MIN(A1,A2);
00140  M01S00139.fsesubs +++|  BEGIN
00141  M01S00140.fsesubs +++|#
00142  M01S00141.fsesubs +++|**        MIN - COMPUTE LESSER OF TWO VALUES.
00143  M01S00142.fsesubs +++|*
00144  M01S00143.fsesubs +++|*         ENTRY  (A1) AND (A2) - VALUES TO CHOOSE.
00145  M01S00144.fsesubs +++|*
00146  M01S00145.fsesubs +++|*         EXIT   (MIN) - LESSER INTEGER VALUE.
00147  M01S00146.fsesubs +++|#
00148  M01S00147.fsesubs +++|  ITEM A1,A2;
00149  M01S00148.fsesubs +++|  IF A1 LQ A2 THEN MIN = A1;
00150  M01S00149.fsesubs +++|  ELSE MIN = A2;
00151  M01S00150.fsesubs +++|  END
00152  M01S00151.fsesubs +++|
00153  M01S00152.fsesubs +++|FUNC MAX(A1,A2);
00154  M01S00153.fsesubs +++|  BEGIN
00155  M01S00154.fsesubs +++|#
00156  M01S00155.fsesubs +++|**        MAX - COMPUTE GREATER OF TWO VALUES.
00157  M01S00156.fsesubs +++|*
00158  M01S00157.fsesubs +++|*         ENTRY  (A1) AND (A2) - VALUES TO CHOOSE.
00159  M01S00158.fsesubs +++|*
00160  M01S00159.fsesubs +++|*         EXIT   (MAX) - GREATER INTEGER VALUE.
00161  M01S00160.fsesubs +++|#
00162  M01S00161.fsesubs +++|  ITEM A1,A2;
00163  M01S00162.fsesubs +++|  IF A1 GQ A2 THEN MAX = A1;
00164  M01S00163.fsesubs +++|  ELSE MAX = A2;
00165  M01S00164.fsesubs +++|  END
00166  M01S00165.fsesubs +++|
00167  M01S00166.fsesubs +++|
00168  M01S00167.fsesubs +++|PROC PUSHTEMP;
00169  M01S00168.fsesubs +++|  BEGIN
00170  M01S00169.fsesubs +++|#
00171  M01S00170.fsesubs +++|**        PUSHTEMP - PRESERVE VALUE ON MISCELLANEOUS STACK.
00172  M01S00171.fsesubs +++|*
00173  M01S00172.fsesubs +++|*         ENTRY  (TEMP) - VALUE TO BE PRESERVED.
00174  M01S00173.fsesubs +++|*
00175  M01S00174.fsesubs +++|*         EXIT   DATA STACK IS PUSHED.
00176  M01S00175.fsesubs +++|*
00177  M01S00176.fsesubs +++|*         USES   DATAPTR, DATASTK.
00178  M01S00177.fsesubs +++|#
00179  M01S00178.fsesubs +++|  IF DATAPTR GQ MAXDATA THEN
00180  M01S00179.fsesubs +++|    BEGIN
00181  M01S00180.fsesubs +++|    FATAL(" REENTRANT DATA STACK OVERFLOWED.$");
00182  M01S00181.fsesubs +++|    END
00183  M01S00182.fsesubs +++|  DATAPTR=DATAPTR+1;
00184  M01S00183.fsesubs +++|  DATASTK[DATAPTR]=TEMP;
00185  M01S00184.fsesubs +++|  END                          # OF PUSHTEMP       #
00186  M01S00185.fsesubs +++|
00187  M01S00186.fsesubs +++|PROC POPTEMP;
00188  M01S00187.fsesubs +++|  BEGIN
00189  M01S00188.fsesubs +++|#
00190  M01S00189.fsesubs +++|**        POPTEMP - RETREIVE VALUE FROM MISCELLANEOUS STACK.
00191  M01S00190.fsesubs +++|*
00192  M01S00191.fsesubs +++|*         ENTRY  DATA STACK ASSUMED TO HAVE DATA.
00193  M01S00192.fsesubs +++|*
00194  M01S00193.fsesubs +++|*         EXIT   (TEMP) - RETRIEVED VALUE.
00195  M01S00194.fsesubs +++|*
00196  M01S00195.fsesubs +++|*         USES   DATAPTR, DATASTK
00197  M01S00196.fsesubs +++|#
00198  M01S00197.fsesubs +++|  IF DATAPTR LS 0 THEN FATAL(" REENTRANT DATA STACK UNDERFLOWED.$");
00199  M01S00198.fsesubs +++|  TEMP=DATASTK[DATAPTR];
00200  M01S00199.fsesubs +++|  DATAPTR=DATAPTR-1;
00201  M01S00200.fsesubs +++|  END                          # OF POPTEMP        #
00202  M01S00201.fsesubs +++|
00203  M01S00202.fsesubs +++|
00204  M01S00203.fsesubs +++|PROC STARTCMD;
00205  M01S00204.fsesubs +++|  BEGIN
00206  M01S00205.fsesubs +++|#
00207  M01S00206.fsesubs +++|**        STARTCMD - INITIALIZE SYNTAX SCANNER FOR NEW COMMANDS.
00208  M01S00207.fsesubs +++|*
00209  M01S00208.fsesubs +++|*         ENTRY  (CMDLINE) ALREADY FILLED IN WITH NEW STRING.
00210  M01S00209.fsesubs +++|*
00211  M01S00210.fsesubs +++|*         EXIT   (CMDLINE) TRIMMED.
00212  M01S00211.fsesubs +++|*                SCANPOS, TOKENPOS, CMDMARKER, KEYWDTYPE INITIALIZED.
00213  M01S00212.fsesubs +++|*                EXPANDAT INITIALIZED.
00214  M01S00213.fsesubs +++|#
00215  M01S00214.fsesubs +++|  TRIM(CMDLIN,0);
00216  M01S00215.fsesubs +++|  SCANPOS=0;
00217  M01S00216.fsesubs +++|  TOKENPOS=0;
00218  M01S00217.fsesubs +++|  CMDMARKER=0;
00219  M01S00218.fsesubs +++|  KEYWDTYPE=1;
00220  M01S00219.fsesubs +++|  EXPANDAT=-1;
00221  M01S00220.fsesubs +++|  END                          # OF STARTCMD       #
00222  M01S00221.fsesubs +++|
00223  M01S00222.fsesubs +++|
00224  M01S00223.fsesubs +++|FUNC TABFN(TABNUM);
00225  M01S00224.fsesubs +++|  BEGIN
00226  M01S00225.fsesubs +++|#
00227  M01S00226.fsesubs +++|**        TABFN - COMPUTE TAB COLUMN BY ORDINAL.
00228  M01S00227.fsesubs +++|*
00229  M01S00228.fsesubs +++|*         ENTRY  (TABNUM) INTEGER ORDINAL OF TAB STOP.
00230  M01S00229.fsesubs +++|*
00231  M01S00230.fsesubs +++|*         EXIT   (TABFN) COLUMN OFFSET.
00232  M01S00231.fsesubs +++|#
00233  M01S00232.fsesubs +++|  ITEM TABNUM;
Line S00233 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00234  M02S00233.ns2129  ---|  IF TABNUM LS 1 OR TABNUM GR 14 THEN TABFN=0;
Line S00234 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00235  M02S00234.ns2129  ---|  ELSE IF TABNUM LQ 7 THEN TABFN=B<TABNUM*8-8,8>TABS1;
Line S00235 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00236  M02S00235.ns2129  ---|  ELSE TABFN=B<TABNUM*8-64,8>TABS2;
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  M01S00236.fsesubs +++|  END                          # OF TABFN          #
00247  M01S00237.fsesubs +++|
00248  M01S00238.fsesubs +++|
00249  M01S00239.fsesubs +++|PROC COPYTABS;
00250  M01S00240.fsesubs +++|  IOBEGIN(COPYTABS)
00251  M01S00241.fsesubs +++|#
00252  M01S00242.fsesubs +++|**        COPYTABS - COPY/CONVERT TABS, TABVECTOR->VIRTERM.
00253  M01S00243.fsesubs +++|*
00254  M01S00244.fsesubs +++|*         ENTRY  TABVECTOR ALREADY SET UP.
00255  M01S00245.fsesubs +++|*
00256  M01S00246.fsesubs +++|*         EXIT   TERMINAL CONFIGURED, VIRTERM DITTO.
00257  M01S00247.fsesubs +++|*
00258  M01S00248.fsesubs +++|*         CALLS  VDTCTS, VDTSTS.
00259  M01S00249.fsesubs +++|*
00260  M01S00250.fsesubs +++|*         USES   LINCTR, LINNUM1.
00261  M01S00251.fsesubs +++|#
00262  M01S00252.fsesubs +++|  VDTCTS;                    # CLEAR OLD TABS    #
00263  M01S00253.fsesubs +++|  VDTSTS(0);                 # ALWAYS  #
Line S00254 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00264  M02S00254.ns2129  ---|  IF TABS1 EQ 0 THEN IORET
00265  M01S00010.ns2129  +++|  IF TABVCTWRD[1] EQ 0 THEN IORET
00266  M01S00255.fsesubs +++|  VDTSTS(TABFN(1));
Line S00256 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2129
Seq #  *Modification Id* Act 
----------------------------+
00267  M02S00256.ns2129  ---|  FOR LINCTR=2 STEP 1 UNTIL 14 DO
00268  M01S00011.ns2129  +++|  FOR LINCTR=2 STEP 1 UNTIL TABSTOPS DO
00269  M01S00257.fsesubs +++|    BEGIN
00270  M01S00258.fsesubs +++|    LINNUM1=TABFN(LINCTR);
00271  M01S00259.fsesubs +++|    IF LINNUM1 NQ 0 THEN
00272  M01S00260.fsesubs +++|      BEGIN
00273  M01S00261.fsesubs +++|      VDTSTS(LINNUM1);
00274  M01S00262.fsesubs +++|      END
00275  M01S00263.fsesubs +++|    ELSE IORET
00276  M01S00264.fsesubs +++|    END
00277  M01S00265.fsesubs +++|
00278  M01S00266.fsesubs +++|  IOEND  # COPYTABS #
00279  M01S00267.fsesubs +++|
00280  M01S00268.fsesubs +++|
00281  M01S00269.fsesubs +++|PROC MAKEFET(AFET,NAME,BUFFER,LENGTH);
00282  M01S00270.fsesubs +++|  BEGIN
00283  M01S00271.fsesubs +++|#
00284  M01S00272.fsesubs +++|**        MAKEFET - INITIALIZE A FET.
00285  M01S00273.fsesubs +++|*
00286  M01S00274.fsesubs +++|*         ENTRY  AFET - FET TO BE INITIALIZED.
00287  M01S00275.fsesubs +++|*                NAME - NAME OF FILE.
00288  M01S00276.fsesubs +++|*                BUFFER - THE CIRCULAR BUFFER.
00289  M01S00277.fsesubs +++|*                LENGTH - LENGTH OF CIRCULAR BUFFER.
00290  M01S00278.fsesubs +++|*
00291  M01S00279.fsesubs +++|*         NOTE   USES THEN RESTORES BASE ADDRESS FOR "FET" ARRAY.
00292  M01S00280.fsesubs +++|#
00293  M01S00281.fsesubs +++|  ARRAY AFET;;
00294  M01S00282.fsesubs +++|  ITEM NAME C(7);
00295  M01S00283.fsesubs +++|  ARRAY BUFFER;;
00296  M01S00284.fsesubs +++|  ITEM LENGTH;
00297  M01S00285.fsesubs +++|  ITEM TMP,TMP2, NEWNAME C(7);
00298  M01S00286.fsesubs +++|
00299  M01S00287.fsesubs +++|  ZEROWD(AFET,FETSIZ);
00300  M01S00288.fsesubs +++|  TMP=LOC(FET);
00301  M01S00289.fsesubs +++|  P<FET>=LOC(AFET);
00302  M01S00290.fsesubs +++|  NEWNAME=TRIMNAME(NAME);
00303  M01S00291.fsesubs +++|  FETNAM=NEWNAME;
00304  M01S00292.fsesubs +++|  FETFIR=LOC(BUFFER);
00305  M01S00293.fsesubs +++|  FETIN=FETFIR;
00306  M01S00294.fsesubs +++|  FETOUT=FETFIR;
00307  M01S00295.fsesubs +++|  FETLIM=FETFIR+LENGTH;
00308  M01S00296.fsesubs +++|  IF TRIMNAME(NAME) NQ 0 THEN
00309  M01S00297.fsesubs +++|   BEGIN
00310  M01S00298.fsesubs +++|    FETCOD=1;
00311  M01S00299.fsesubs +++|    FETL=2;
00312  M01S00300.fsesubs +++|   END
00313  M01S00301.fsesubs +++|  P<FET>=TMP;
00314  M01S00302.fsesubs +++|
00315  M01S00303.fsesubs +++|  END                          # OF MAKEFET        #
00316  M01S00304.fsesubs +++|
00317  M01S00305.fsesubs +++|
00318  M01S00306.fsesubs +++|PROC TTLFN(PARM);
00319  M01S00307.fsesubs +++|  IOBEGIN(TTLFN)
00320  M01S00308.fsesubs +++|#
00321  M01S00309.fsesubs +++|**        TTLFN - PRINT OUT A ZERO-TERMINATED NAME.
00322  M01S00310.fsesubs +++|*
00323  M01S00311.fsesubs +++|*         ENTRY  (PARM) - NAME TO BE PRINTED.
00324  M01S00312.fsesubs +++|*
00325  M01S00313.fsesubs +++|*         CALLS  TTST.
00326  M01S00314.fsesubs +++|#
00327  M01S00315.fsesubs +++|  ITEM TMP1;
00328  M01S00316.fsesubs +++|  ITEM PARM;
00329  M01S00317.fsesubs +++|  TMP1=0;
00330  M01S00318.fsesubs +++|  WHYLE C<TMP1,1>PARM NQ 0 AND TMP1 LQ 7 DO TMP1=TMP1+1;
00331  M01S00319.fsesubs +++|  TTST(PARM,TMP1);
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  M01S00320.fsesubs +++|  IOEND                      # OF TTLFN          #
00338  M01S00321.fsesubs +++|
00339  M01S00322.fsesubs +++|
00340  M01S00323.fsesubs +++|CONTROL IFEQ SINGLE,1;
00341  M01S00324.fsesubs +++|
00342  M01S00325.fsesubs +++|  PROC SETCSET(WHICH);
00343  M01S00326.fsesubs +++|    BEGIN
00344  M01S00327.fsesubs +++|#
00345  M01S00328.fsesubs +++|**        SETCSET - ISSUE CSET MACRO.
00346  M01S00329.fsesubs +++|*
00347  M01S00330.fsesubs +++|*         ENTRY  (WHICH) - INDICATES ASCII OR NORMAL.
00348  M01S00331.fsesubs +++|*
00349  M01S00332.fsesubs +++|*         USES   ORIGIN.
00350  M01S00333.fsesubs +++|*
00351  M01S00334.fsesubs +++|*         CALLS  CSETA, CSETN.
00352  M01S00335.fsesubs +++|#
00353  M01S00336.fsesubs +++|    ITEM WHICH B;
00354  M01S00337.fsesubs +++|    IF ORIGIN EQ TXOT THEN
00355  M01S00338.fsesubs +++|      BEGIN
00356  M01S00339.fsesubs +++|      IF WHICH THEN CSETA;
00357  M01S00340.fsesubs +++|      ELSE CSETN;
00358  M01S00341.fsesubs +++|      END
00359  M01S00342.fsesubs +++|    END                       # OF SETCSET        #
00360  M01S00343.fsesubs +++|
00361  M01S00344.fsesubs +++|CONTROL FI;
00362  M01S00345.fsesubs +++|PAGE                         # ABORT ROUTINES    #
00363  M01S00346.fsesubs +++|
00364  M01S00347.fsesubs +++|
00365  M01S00348.fsesubs +++|PROC FATAL(STR);
00366  M01S00349.fsesubs +++|  IOBEGIN(FATAL)
00367  M01S00350.fsesubs +++|#
00368  M01S00351.fsesubs +++|**        FATAL - ABORT THE EDITOR WITH MESSAGE.
00369  M01S00352.fsesubs +++|*         MORTAL - SIMILAR FOR PROBLEMS WITHIN TERMINAL I/O.
00370  M01S00353.fsesubs +++|*
00371  M01S00354.fsesubs +++|*         FATAL IS THE PRINCIPAL ROUTINE TO ABORT AN EDIT SESSION
00372  M01S00355.fsesubs +++|*         FOR EITHER AN INTERNAL INCONSISTENCY OR A USER ERROR SO
00373  M01S00356.fsesubs +++|*         SEVERE THAT NO MEANINGFUL FUNCTION CAN BE SALVAGED.  TO
00374  M01S00357.fsesubs +++|*         PREVENT CIRCULAR (RECURSIVE) SUBROUTINE LINKAGES, THE
00375  M01S00358.fsesubs +++|*         WORKIO MODULE IS RESTRICTED TO INTERFACE VIA THE TRAGIC
00376  M01S00359.fsesubs +++|*         ROUTINE AND THE TERMIO MODULE IS RESTRICTED TO USE THE
00377  M01S00360.fsesubs +++|*         MORTAL ENTRY POINT.
00378  M01S00361.fsesubs +++|*
00379  M01S00362.fsesubs +++|*         ENTRY  STR - THE ABORT MESSAGE.
00380  M01S00363.fsesubs +++|*
00381  M01S00364.fsesubs +++|*         EXIT   TO ABORT ROUTINE, WITH WORKFILE EVICTED.
00382  M01S00365.fsesubs +++|*
00383  M01S00366.fsesubs +++|*         USES   LINPTR1, P<FROM>.
00384  M01S00367.fsesubs +++|*
00385  M01S00368.fsesubs +++|*         CALLS  TTSTR, TTLIN, MESSAGE, TTSYNC, VDTCLO, EVICT,
00386  M01S00369.fsesubs +++|*                CHECKIO, FATALTRAP.
00387  M01S00370.fsesubs +++|#
00388  M01S00371.fsesubs +++|  ITEM STR C(40);
00389  M01S00372.fsesubs +++|  ERRSTRING=STR;             # HANDLE PARM REENTRANTLY     #
Line S00373 Modification History
M01 (Added by) fsesubs
M02 (Updated by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00390  M02S00373.v23l617 ---|  IF SCREENMODE THEN CLEARSCREEN;
00391  M01S00001.v23l617 +++|  CONTROL IFEQ SINGLE,1;
00392  M01S00002.v23l617 +++|    IF SCREENMODE THEN CLEARSCREEN;
00393  M01S00003.v23l617 +++|  CONTROL FI;
Line S00374 Modification History
M01 (Added by) fsesubs
M02 (Updated by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00394  M02S00374.v23l617 ---|  TTLIN(" INTERNAL ERROR.$");
00395  M01S00004.v23l617 +++|  TTLIN(" FSE INTERNAL ERROR.$");
00396  M01S00375.fsesubs +++|  TTLIN(ERRSTRING);
Line S00376 Modification History
M01 (Added by) fsesubs
M02 (Updated by) v23l617
Seq #  *Modification Id* Act 
----------------------------+
00397  M02S00376.v23l617 ---|  TTLIN(" CONTACT SITE ANALYST.$");
00398  M01S00377.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00399  M01S00378.fsesubs +++|    GOTO FATAL2;
00400  M01S00379.fsesubs +++|  CONTROL FI;
00401  M01S00380.fsesubs +++|
00402  M01S00381.fsesubs +++|ENTRY PROC MORTAL(STR);
00403  M01S00382.fsesubs +++|
00404  M01S00383.fsesubs +++|  CONTROL IFEQ SINGLE,1;
00405  M01S00384.fsesubs +++|    ITEM MSGBUF C(40)=0;
00406  M01S00385.fsesubs +++|    ITEM TMP1;
00407  M01S00386.fsesubs +++|    ERRSTRING=STR;
00408  M01S00387.fsesubs +++|FATAL2:
00409  M01S00388.fsesubs +++|    FOR TMP1=0 STEP 1 UNTIL 37 DO
00410  M01S00389.fsesubs +++|      BEGIN
00411  M01S00390.fsesubs +++|      IF C<TMP1,1>STR NQ "$" THEN C<TMP1,1>MSGBUF=C<TMP1,1>STR;
00412  M01S00391.fsesubs +++|      ELSE TMP1=38;
00413  M01S00392.fsesubs +++|      END
00414  M01S00393.fsesubs +++|    MESSAGE(MSGBUF,3,1);
00415  M01S00394.fsesubs +++|    TTSYNC;
00416  M01S00395.fsesubs +++|    VDTCLO(0);
00417  M01S00396.fsesubs +++|    EVICT(FET,1);
00418  M01S00397.fsesubs +++|    ABORT;
00419  M01S00398.fsesubs +++|  CONTROL FI;
00420  M01S00399.fsesubs +++|  CONTROL IFEQ MULTI,1;
00421  M01S00400.fsesubs +++|    IF NOT ABORTED THEN
00422  M01S00401.fsesubs +++|      BEGIN
00423  M01S00402.fsesubs +++|      ABORTED=TRUE;
00424  M01S00403.fsesubs +++|      CHECKIO;
00425  M01S00404.fsesubs +++|      END
00426  M01S00405.fsesubs +++|    FATALTRAP;
00427  M01S00406.fsesubs +++|  CONTROL FI;
00428  M01S00407.fsesubs +++|  IOEND                        # OF FATAL          #
00429  M01S00408.fsesubs +++|
00430  M01S00409.fsesubs +++|
00431  M01S00410.fsesubs +++|PROC TRAGIC(STR);
00432  M01S00411.fsesubs +++|  IOBEGIN(TRAGIC)
00433  M01S00412.fsesubs +++|#
00434  M01S00413.fsesubs +++|**        TRAGIC - ABORT EDITOR DUE TO WORKFILE PROBLEM.
00435  M01S00414.fsesubs +++|*
00436  M01S00415.fsesubs +++|*         TRAGIC IS USED BY WORKIO FOR SELF-ABORT SITUATIONS. BY
00437  M01S00416.fsesubs +++|*         SETTING THE "ABORTED" FLAG, WE DIRECT "FATAL" TO IMMEDIATELY
00438  M01S00417.fsesubs +++|*         EVICT THE WORKFILE WITHOUT FURTHER WORKIO CALLS.
00439  M01S00418.fsesubs +++|*
00440  M01S00419.fsesubs +++|*         ENTRY  STR - ERROR MESSAGE.
00441  M01S00420.fsesubs +++|*
00442  M01S00421.fsesubs +++|*         EXIT   TO FATAL, WITH "ABORTED" SET.
00443  M01S00422.fsesubs +++|#
00444  M01S00423.fsesubs +++|  ITEM STR C(80);
00445  M01S00424.fsesubs +++|  ABORTED=TRUE;
00446  M01S00425.fsesubs +++|  FATAL(STR);
00447  M01S00426.fsesubs +++|  IOEND                        # OF TRAGIC         #
00448  M01S00427.fsesubs +++|PAGE                         # SUPPORT ROUTINES FOR INTERNAL CHARSET #
00449  M01S00428.fsesubs +++|
00450  M01S00429.fsesubs +++|
00451  M01S00430.fsesubs +++|PROC COPYLIN(LIN1,LIN2);
00452  M01S00431.fsesubs +++|  BEGIN
00453  M01S00432.fsesubs +++|#
00454  M01S00433.fsesubs +++|**        COPYLIN - COPY LINE IMAGE, INTERNAL CHARSET.
00455  M01S00434.fsesubs +++|*
00456  M01S00435.fsesubs +++|*         ENTRY  LIN1 IS SOURCE, LIN2 IS TARGET.
00457  M01S00436.fsesubs +++|#
00458  M01S00437.fsesubs +++|  ARRAY LIN1;;  ARRAY LIN2;;
00459  M01S00438.fsesubs +++|  DUMB=LINESZ(LIN1);         # FIX EOL BITS      #
00460  M01S00439.fsesubs +++|  DUMB=MOVELN(LIN1,LIN2);    # ACTUAL COPY       #
00461  M01S00440.fsesubs +++|  END                         # OF COPYLIN        #
00462  M01S00441.fsesubs +++|
00463  M01S00442.fsesubs +++|
00464  M01S00443.fsesubs +++|PROC EXTENDC(TEXTLIN,X);
00465  M01S00444.fsesubs +++|  BEGIN
00466  M01S00445.fsesubs +++|#
00467  M01S00446.fsesubs +++|**        EXTENDC - EXTEND INTERNAL LINE IMAGE TO DESIRED LENGTH.
00468  M01S00447.fsesubs +++|*
00469  M01S00448.fsesubs +++|*         ENTRY  TEXTLIN - TRIMMED LINE IMAGE.
00470  M01S00449.fsesubs +++|*                X - LENGTH TO BE PADDED TO.
00471  M01S00450.fsesubs +++|*
00472  M01S00451.fsesubs +++|*         MACROS SETCHAR.
00473  M01S00452.fsesubs +++|*
00474  M01S00453.fsesubs +++|*         CALLS  LENGTH.
00475  M01S00454.fsesubs +++|#
00476  M01S00455.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00477  M01S00456.fsesubs +++|  ITEM TMP1, TMP2, X;
00478  M01S00457.fsesubs +++|  IF X GQ LENGTH(TEXTLIN) THEN
00479  M01S00458.fsesubs +++|    BEGIN
00480  M01S00459.fsesubs +++|    TMP1=LENGTH(TEXTLIN);
00481  M01S00460.fsesubs +++|    FOR TMP2=TMP1 STEP 1 UNTIL X
00482  M01S00461.fsesubs +++|      DO SETCHAR(TEXTLINE,TMP2,CBLANK);
00483  M01S00462.fsesubs +++|    SETCHAR(TEXTLINE,X+1,CENDLINE);
00484  M01S00463.fsesubs +++|    END
00485  M01S00464.fsesubs +++|  END                         # OF EXTENDC       #
00486  M01S00465.fsesubs +++|
00487  M01S00466.fsesubs +++|
00488  M01S00467.fsesubs +++|PROC LSHIFT(TEXTLIN,X,N);
00489  M01S00468.fsesubs +++|  BEGIN
00490  M01S00469.fsesubs +++|#
00491  M01S00470.fsesubs +++|**        LSHIFT - SHIFT INTERNAL LINE IMAGE LEFT.
00492  M01S00471.fsesubs +++|*
00493  M01S00472.fsesubs +++|*         CHARACTER POSITION "X" GOES TO "X-N", X+1 TO X+1-N, ETC.
00494  M01S00473.fsesubs +++|*
00495  M01S00474.fsesubs +++|*         ENTRY  TEXTLIN - INTERNAL LINE IMAGE.
00496  M01S00475.fsesubs +++|*                X - FIRST SHIFTABLE POSITION.
00497  M01S00476.fsesubs +++|*                N - DISTANCE OF SHIFT.
00498  M01S00477.fsesubs +++|*
00499  M01S00478.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00500  M01S00479.fsesubs +++|*
00501  M01S00480.fsesubs +++|*         CALLS  LENGTH, EXTENDC.
00502  M01S00481.fsesubs +++|#
00503  M01S00482.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00504  M01S00483.fsesubs +++|  ITEM X,N,NN,I,L,C;
00505  M01S00484.fsesubs +++|  IF N NQ 0 THEN
00506  M01S00485.fsesubs +++|    BEGIN
00507  M01S00486.fsesubs +++|    EXTENDC(TEXTLIN,X-1);
00508  M01S00487.fsesubs +++|    L=LENGTH(TEXTLIN);
00509  M01S00488.fsesubs +++|    NN=N;
00510  M01S00489.fsesubs +++|    IF X LS N THEN NN=X;
00511  M01S00490.fsesubs +++|    FOR I=X STEP 1 UNTIL L DO
00512  M01S00491.fsesubs +++|      BEGIN
00513  M01S00492.fsesubs +++|      GETCHAR(TEXTLINE,I,C);
00514  M01S00493.fsesubs +++|      SETCHAR(TEXTLINE,I-NN,C);
00515  M01S00494.fsesubs +++|      END
00516  M01S00495.fsesubs +++|    END
00517  M01S00496.fsesubs +++|  END                       # OF LSHIFT         #
00518  M01S00497.fsesubs +++|
00519  M01S00498.fsesubs +++|
00520  M01S00499.fsesubs +++|PROC RSHIFT(TEXTLIN,X,N);
00521  M01S00500.fsesubs +++|  BEGIN
00522  M01S00501.fsesubs +++|  # RSHIFT - RIGHT SHIFT LINE (MOVE X TO X+N, X+1 TO X+1+N, ETC.)  #
00523  M01S00502.fsesubs +++|#
00524  M01S00503.fsesubs +++|**        RSHIFT - RIGHT SHIFT OF INTERNAL LINE IMAGE.
00525  M01S00504.fsesubs +++|*
00526  M01S00505.fsesubs +++|*         RSHIFT MOVES POSITION "X" TO "X+N", "X+1" TO "X+1+N", ETC.
00527  M01S00506.fsesubs +++|*
00528  M01S00507.fsesubs +++|*         ENTRY  SAME CONDITIONS AS LSHIFT ROUTINE.
00529  M01S00508.fsesubs +++|*
00530  M01S00509.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00531  M01S00510.fsesubs +++|*
00532  M01S00511.fsesubs +++|*         CALLS  EXTENDC, LENGTH.
00533  M01S00512.fsesubs +++|#
00534  M01S00513.fsesubs +++|  ARRAY TEXTLIN[0:99]; ITEM TEXTLINE;
00535  M01S00514.fsesubs +++|  ITEM X,N,I,L,C;
00536  M01S00515.fsesubs +++|  IF N NQ 0 THEN
00537  M01S00516.fsesubs +++|    BEGIN
00538  M01S00517.fsesubs +++|    EXTENDC(TEXTLIN,X-1);
00539  M01S00518.fsesubs +++|    L=LENGTH(TEXTLIN);
00540  M01S00519.fsesubs +++|    EXTENDC(TEXTLIN,X+N);
00541  M01S00520.fsesubs +++|    IF L+N GR BUFCHAR THEN
00542  M01S00521.fsesubs +++|      BEGIN
00543  M01S00522.fsesubs +++|      L=BUFCHAR-N;
00544  M01S00523.fsesubs +++|      SETCHAR(TEXTLINE,L,CENDLINE);
00545  M01S00524.fsesubs +++|      END
00546  M01S00525.fsesubs +++|    FOR I=L STEP -1 UNTIL X DO
00547  M01S00526.fsesubs +++|      BEGIN
00548  M01S00527.fsesubs +++|      GETCHAR(TEXTLINE,I,C);
00549  M01S00528.fsesubs +++|      SETCHAR(TEXTLINE,I+N,C);
00550  M01S00529.fsesubs +++|      END
00551  M01S00530.fsesubs +++|    SETCHAR(TEXTLINE,L+N,CENDLINE);
00552  M01S00531.fsesubs +++|    END
00553  M01S00532.fsesubs +++|  END                       # OF RSHIFT #
00554  M01S00533.fsesubs +++|
00555  M01S00534.fsesubs +++|
00556  M01S00535.fsesubs +++|PROC CONVIN(TEXTLINE,CHARTYPE);
00557  M01S00536.fsesubs +++|  BEGIN
00558  M01S00537.fsesubs +++|#
00559  M01S00538.fsesubs +++|**        CONVIN - CONVERT INPUT LINE TO INTERNAL FORMAT.
00560  M01S00539.fsesubs +++|*
00561  M01S00540.fsesubs +++|*         ENTRY  TMPLIN - ALREADY CONTAINS NOS-FORMAT LINE IMAGE.
Line S00541 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00562  M02S00541.ns2582  ---|*                CHARTYPE - INDICATES CONVERSION ALGORITHM, 0=6-BIT,
Line S00542 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00563  M02S00542.ns2582  ---|*                    1=6/12, 2=8/12.
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  M01S00543.fsesubs +++|*
00570  M01S00544.fsesubs +++|*         EXIT   TEXTLINE - CONTAINS INTERNAL FORMAT LINE IMAGE.
00571  M01S00001.ns2225  +++|*                ZEROCOLIN - FORCED TRUE IF AND ONLY IF 6/12 AND
00572  M01S00002.ns2225  +++|*                    A 00 COLON IS ENCOUNTERED.  OTHERWISE UNCHANGED.
00573  M01S00545.fsesubs +++|*
00574  M01S00546.fsesubs +++|*         CALLS  FASTCNI, FASTCAI, SLOWC8I.
00575  M01S00547.fsesubs +++|#
00576  M01S00548.fsesubs +++|  ARRAY TEXTLINE[0:99]; ITEM TEXT;
00577  M01S00549.fsesubs +++|  ITEM CHARTYPE;
00578  M01S00003.ns2225  +++|  ITEM TMP1;
00579  M01S00550.fsesubs +++|  SWITCH CONVINSW CINORM,CINORM,CIASC,CI812;
00580  M01S00551.fsesubs +++|
00581  M01S00552.fsesubs +++|  GOTO CONVINSW[CHARTYPE];
00582  M01S00553.fsesubs +++|
00583  M01S00554.fsesubs +++|CINORM:
00584  M01S00555.fsesubs +++|  FASTCNI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00585  M01S00556.fsesubs +++|  RETURN;
00586  M01S00557.fsesubs +++|
00587  M01S00558.fsesubs +++|CIASC:
Line S00559 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00588  M02S00559.ns2225  ---|  FASTCAI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00589  M01S00004.ns2225  +++|  TMP1=0;
00590  M01S00005.ns2225  +++|  FASTCAI(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,TMP1);
Line S00006 Modification History
M01 (Added by) ns2225
M02 (Updated by) ns2623
Seq #  *Modification Id* Act 
----------------------------+
00591  M02S00006.ns2623  ---|  IF TMP1 NQ 0 THEN ZEROCOLIN=TRUE;
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  M01S00560.fsesubs +++|  RETURN;
00598  M01S00561.fsesubs +++|
00599  M01S00562.fsesubs +++|CI812:
00600  M01S00563.fsesubs +++|  SLOWC8I(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00601  M01S00564.fsesubs +++|  RETURN;
00602  M01S00565.fsesubs +++|
00603  M01S00566.fsesubs +++|  END                          # OF CONVIN        #
00604  M01S00567.fsesubs +++|
00605  M01S00568.fsesubs +++|
00606  M01S00569.fsesubs +++|PROC CONVOUT(TEXTLINE,CHARTYPE);
00607  M01S00570.fsesubs +++|  BEGIN
00608  M01S00571.fsesubs +++|#
00609  M01S00572.fsesubs +++|**        CONVOUT - CONVERT INTERNAL LINE IMAGE TO NOS FORMAT.
00610  M01S00573.fsesubs +++|*
00611  M01S00574.fsesubs +++|*         ENTRY  TEXTLINE - INTERNAL LINE IMAGE.
Line S00575 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00612  M02S00575.ns2582  ---|*                CHARTYPE - SAME AS "CONVOUT" ROUTINE.
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.
00619  M01S00007.ns2225  +++|*                ZEROCOLOUT - 7404 VERSUS 00 FORMAT FOR COLONS WHEN
00620  M01S00008.ns2225  +++|*                    6/12 CHARACTER SET DETECTED.
00621  M01S00576.fsesubs +++|*
00622  M01S00577.fsesubs +++|*         EXIT   TMPLIN - CONTAINS NOS LINE IMAGE.
00623  M01S00578.fsesubs +++|*
00624  M01S00579.fsesubs +++|*         MACROS GETCHAR, SETCHAR.
00625  M01S00580.fsesubs +++|*
00626  M01S00581.fsesubs +++|*         CALLS  LENGTH, FASTCAO, FASTCNO, NOSWDSZ, SLOWC8O.
00627  M01S00582.fsesubs +++|#
00628  M01S00583.fsesubs +++|  ARRAY TEXTLINE[0:99]; ITEM TEXT;
00629  M01S00584.fsesubs +++|  ITEM CHARTYPE;
Line S00585 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2225
Seq #  *Modification Id* Act 
----------------------------+
00630  M02S00585.ns2225  ---|  ITEM TMP1, TMP2;
00631  M01S00009.ns2225  +++|  ITEM TMP1, TMP2, BOOL B;
Line S00586 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00632  M02S00586.ns2582  ---|  SWITCH CONVOUTSW CONORM,CONORM,COASC,CO812;
00633  M01S00012.ns2582  +++|  SWITCH CONVOUTSW CONORM,CONORM,COASC,CO812,COAINT;
00634  M01S00587.fsesubs +++|
00635  M01S00588.fsesubs +++|  TMP1=LENGTH(TEXTLINE);
Line S00589 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00636  M02S00589.fsesu1  ---|  IF TMP1 NQ 0 THEN
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 (Updated by) fsesu2
Seq #  *Modification Id* Act 
----------------------------+
00639  M02S00003.fsesu2  ---|    TMPLINE[0]=O"5555 0000 0000 0000 0000";
Line S00004 Modification History
M01 (Added by) fsesu1
M02 (Updated by) fsesu2
Seq #  *Modification Id* Act 
----------------------------+
00640  M02S00004.fsesu2  ---|    RETURN;
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;
00650  M01S00005.fsesu1  +++|    END
Line S00006 Modification History
M01 (Added by) fsesu1
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00651  M02S00006.ns2582  ---|  ELSE
00652  M01S00013.ns2582  +++|  IF CHARTYPE LS 3 THEN              # IF DISPLAY OR STANDARD ASCII #
00653  M01S00590.fsesubs +++|    BEGIN
00654  M01S00591.fsesubs +++|    GETCHAR(TEXT,TMP1-1,TMP2);
Line S00592 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00655  M02S00592.fsesu1  ---|    IF TMP2 EQ CCOLON THEN     # EXPLICIT COLONS NEED BLANK  #
Line S00593 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu1
Seq #  *Modification Id* Act 
----------------------------+
00656  M02S00593.fsesu1  ---|      BEGIN
Line S00007 Modification History
M01 (Added by) fsesu1
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00657  M02S00007.ns2582  ---|    IF TMP2 EQ CCOLON AND CHARTYPE NQ 3 THEN
00658  M01S00014.ns2582  +++|    IF TMP2 EQ CCOLON THEN
00659  M01S00008.fsesu1  +++|      BEGIN                          # TRAILING COLONS NEED A BLANK #
00660  M01S00594.fsesubs +++|      SETCHAR(TEXT,TMP1,CBLANK);
00661  M01S00595.fsesubs +++|      TMP1=TMP1+1;
00662  M01S00596.fsesubs +++|      SETCHAR(TEXT,TMP1,CENDLINE);
00663  M01S00597.fsesubs +++|      END
Line S00009 Modification History
M01 (Added by) fsesu1
M02 (Updated by) ns2582
Seq #  *Modification Id* Act 
----------------------------+
00664  M02S00009.ns2582  ---|    GOTO CONVOUTSW[CHARTYPE];
00665  M01S00598.fsesubs +++|    END
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 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00672  M02S00599.fsesu3  ---|
Line S00600 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu1
M03 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00673  M03S00600.fsesu3  ---|  GOTO CONVOUTSW[CHARTYPE];
Line S00601 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00674  M02S00601.fsesu3  ---|
Line S00602 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00675  M02S00602.fsesu3  ---|COASC:
Line S00603 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2225
M03 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00676  M03S00603.fsesu3  ---|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,TRUE);
Line S00010 Modification History
M01 (Added by) ns2225
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00677  M02S00010.fsesu3  ---|  BOOL=NOT ZEROCOLOUT;
Line S00011 Modification History
M01 (Added by) ns2225
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00678  M02S00011.fsesu3  ---|  FASTCAO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2,BOOL);
Line S00604 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00679  M02S00604.fsesu3  ---|  GOTO COLAST;
Line S00605 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00680  M02S00605.fsesu3  ---|
Line S00606 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00681  M02S00606.fsesu3  ---|CONORM:
Line S00607 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00682  M02S00607.fsesu3  ---|  FASTCNO(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
Line S00608 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00683  M02S00608.fsesu3  ---|  GOTO COLAST;
Line S00609 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00684  M02S00609.fsesu3  ---|
Line S00610 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00685  M02S00610.fsesu3  ---|COLAST:                      # ASSURE NO 66-BIT TERMINATORS          #
Line S00611 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu3
Seq #  *Modification Id* Act 
----------------------------+
00686  M02S00611.fsesu3  ---|  TMP1=NOSWDSZ(BUFWIDE2,TMPLIN);
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  M01S00612.fsesubs +++|  IF TMP1 GR 1 AND TMPLINE[TMP1-1] EQ 0
00697  M01S00613.fsesubs +++|    AND TMPLINE[TMP1-2] LAN O"00000000000000007700" NQ 0
00698  M01S00614.fsesubs +++|    AND TMPLINE[TMP1-2] LAN O"00000000000000000077" EQ 0
00699  M01S00615.fsesubs +++|    THEN TMPLINE[TMP1-2]=TMPLINE[TMP1-2] LOR O"00000000000000000055";
00700  M01S00616.fsesubs +++|  RETURN;
00701  M01S00617.fsesubs +++|
00702  M01S00618.fsesubs +++|CO812:
00703  M01S00619.fsesubs +++|  SLOWC8O(TEXTLINE,TMPLIN,BUFWIDE,BUFWIDE2);
00704  M01S00620.fsesubs +++|  RETURN;
00705  M01S00621.fsesubs +++|
00706  M01S00622.fsesubs +++|  END                          # OF CONVOUT        #
00707  M01S00623.fsesubs +++|
00708  M01S00624.fsesubs +++|
00709  M01S00625.fsesubs +++|PROC SLOWC8I(TEXTLIN,BUFLIN,SIZE1,SIZE2);
00710  M01S00626.fsesubs +++|  BEGIN
00711  M01S00627.fsesubs +++|#
00712  M01S00628.fsesubs +++|**        SLOWC8I - CONVERT 8/12 INPUT LINE TO INTERNAL CHARSET.
00713  M01S00629.fsesubs +++|*
00714  M01S00630.fsesubs +++|*         ENTRY  BUFLIN - NOS LINE IMAGE.
00715  M01S00631.fsesubs +++|*                SIZE1 - CAPACITY OF TEXTLIN IN WORDS.
00716  M01S00632.fsesubs +++|*                SIZE2 - CAPACITY OF BUFLIN IN WORDS.
00717  M01S00633.fsesubs +++|*
00718  M01S00634.fsesubs +++|*         EXIT   TEXTLIN - INTERNAL LINE IMAGE.
00719  M01S00635.fsesubs +++|*
00720  M01S00636.fsesubs +++|*         MACROS SETCHAR, MOD.
00721  M01S00637.fsesubs +++|*
00722  M01S00638.fsesubs +++|*         NOTE   ALGORITHM SENSITIVE TO INTERNAL FORMAT DEFINITION.
00723  M01S00639.fsesubs +++|#
00724  M01S00640.fsesubs +++|  ARRAY TEXTLIN [0:99]; ITEM TEXTLINE;
00725  M01S00641.fsesubs +++|  ARRAY BUFLIN [0:99]; ITEM BUFLINE;
00726  M01S00642.fsesubs +++|  ITEM SIZE1, SIZE2;
00727  M01S00643.fsesubs +++|  ITEM TMP1, TMP2;
00728  M01S00644.fsesubs +++|
00729  M01S00645.fsesubs +++|  SETCHAR(TEXTLINE,BUFCM1,CENDLINE);
00730  M01S00646.fsesubs +++|  TMP1=0;
00731  M01S00647.fsesubs +++|  TMP2=CLETTERA;
00732  M01S00648.fsesubs +++|  WHYLE TMP1/8 LQ SIZE1 AND TMP1/5 LQ SIZE2 AND TMP2 NQ CENDLINE DO
00733  M01S00649.fsesubs +++|    BEGIN
00734  M01S00650.fsesubs +++|    TMP2=B<MOD(TMP1,5)*12,12>BUFLINE[TMP1/5];
00735  M01S00651.fsesubs +++|    IF TMP2 EQ 0 THEN TMP2=CENDLINE;
00736  M01S00652.fsesubs +++|    ELSE TMP2=XLTXPINT[TMP2 LAN O"177"];
00737  M01S00653.fsesubs +++|    SETCHAR(TEXTLINE,TMP1,TMP2);
00738  M01S00654.fsesubs +++|    TMP1=TMP1+1;
00739  M01S00655.fsesubs +++|    END
00740  M01S00656.fsesubs +++|  END                         # OF SLOWC8I        #
00741  M01S00657.fsesubs +++|
00742  M01S00658.fsesubs +++|
00743  M01S00659.fsesubs +++|PROC SLOWC8O(TEXTLIN,BUFLIN,SIZE1,SIZE2);
00744  M01S00660.fsesubs +++|  BEGIN
00745  M01S00661.fsesubs +++|#
00746  M01S00662.fsesubs +++|**        SLOWC8O - CONVERT INTERNAL LINE IMAGE TO 8/12 FORMAT.
00747  M01S00663.fsesubs +++|*
00748  M01S00664.fsesubs +++|*         ENTRY  TEXTLIN - INTERNAL LINE IMAGE.
00749  M01S00665.fsesubs +++|*                SIZE1, SIZE2 - SIMILAR TO "SLOWC8I" ROUTINE.
00750  M01S00666.fsesubs +++|*
00751  M01S00667.fsesubs +++|*         EXIT   BUFLIN - 8/12 FORMAT LINE IMAGE.
00752  M01S00668.fsesubs +++|*
00753  M01S00669.fsesubs +++|*         MACROS SETCHAR, GETCHAR.
00754  M01S00670.fsesubs +++|*
00755  M01S00671.fsesubs +++|*         NOTE   ALGORITHM SENSITIVE TO INTERNAL FORMAT DEFINITION.
00756  M01S00672.fsesubs +++|#
00757  M01S00673.fsesubs +++|  ARRAY TEXTLIN [0:99]; ITEM TEXTLINE;
00758  M01S00674.fsesubs +++|  ARRAY BUFLIN [0:99]; ITEM BUFLINE;
00759  M01S00675.fsesubs +++|  ITEM SIZE1, SIZE2;
00760  M01S00676.fsesubs +++|  ITEM TMP1, TMP2;
00761  M01S00677.fsesubs +++|
00762  M01S00678.fsesubs +++|  SETCHAR(TEXTLINE,BUFCM1,CENDLINE);
00763  M01S00679.fsesubs +++|  FOR TMP1=1 STEP 1 UNTIL SIZE2 DO BUFLINE[TMP1-1]=0;
00764  M01S00680.fsesubs +++|  TMP1=0;
00765  M01S00681.fsesubs +++|  TMP2=1;
00766  M01S00682.fsesubs +++|  WHYLE TMP1/8 LQ SIZE1 AND TMP1/5 LQ SIZE2 AND TMP2 NQ 0 DO
00767  M01S00683.fsesubs +++|    BEGIN
00768  M01S00684.fsesubs +++|    GETCHAR(TEXTLINE,TMP1,TMP2);
00769  M01S00685.fsesubs +++|    IF TMP2 EQ CENDLINE THEN TMP2=0;
00770  M01S00686.fsesubs +++|    ELSE TMP2=XLTINTXP[TMP2] LAN O"3777";
00771  M01S00687.fsesubs +++|    B<MOD(TMP1,5)*12,12>BUFLINE[TMP1/5]=TMP2;
00772  M01S00688.fsesubs +++|    TMP1=TMP1+1;
00773  M01S00689.fsesubs +++|    END
00774  M01S00690.fsesubs +++|
00775  M01S00691.fsesubs +++|  END                         # OF SLOWC8O        #
00776  M01S00692.fsesubs +++|
00777  M01S00693.fsesubs +++|
00778  M01S00694.fsesubs +++|PROC GETLNUM;
00779  M01S00695.fsesubs +++|  BEGIN
00780  M01S00696.fsesubs +++|#
00781  M01S00697.fsesubs +++|**        GETLNUM - ANALYZE INTERNAL LINE IMAGE FOR SEQUENCE NUM.
00782  M01S00698.fsesubs +++|*
00783  M01S00699.fsesubs +++|*         GETLNUM IS USED TO RECOGNIZE A LINE NUMBER ON THE CURRENT
00784  M01S00700.fsesubs +++|*         LINE.  WE SET LINENO TO ITS BINARY VALUE.  WE ALSO SET
00785  M01S00701.fsesubs +++|*         WIDTHFOUND TO THE NUMBER OF DIGITS.  NOTE THAT IF
00786  M01S00702.fsesubs +++|*         THERE IS NO NUMBER, WE RETURN WIDTHFOUND=0, LINENO=0.
00787  M01S00703.fsesubs +++|*
00788  M01S00704.fsesubs +++|*         ENTRY  (LIN) - ALREADY CONTAINS LINE IMAGE.
00789  M01S00705.fsesubs +++|*
00790  M01S00706.fsesubs +++|*         EXIT   LINENO, WIDTHFOUND ARE SET.
00791  M01S00707.fsesubs +++|*
00792  M01S00708.fsesubs +++|*         MACROS GETCHAR.
00793  M01S00709.fsesubs +++|#
00794  M01S00710.fsesubs +++|  ITEM QUIT B;
00795  M01S00711.fsesubs +++|  ITEM TMP2, TMP3;
00796  M01S00712.fsesubs +++|
00797  M01S00713.fsesubs +++|  LINENO=0;
00798  M01S00714.fsesubs +++|  WIDTHFOUND=0;
00799  M01S00715.fsesubs +++|  QUIT=FALSE;
00800  M01S00716.fsesubs +++|  FOR TMP2=0 STEP 1 WHILE TMP2 LS NUMWIDTH AND NOT QUIT DO
00801  M01S00717.fsesubs +++|    BEGIN
00802  M01S00718.fsesubs +++|    GETCHAR(LINE,TMP2,TMP3);
00803  M01S00719.fsesubs +++|    IF TMP3 GQ CDIGIT0 AND TMP3 LQ CDIGIT9 THEN
00804  M01S00720.fsesubs +++|      BEGIN
00805  M01S00721.fsesubs +++|      LINENO=LINENO*10 + TMP3-CDIGIT0;
00806  M01S00722.fsesubs +++|      WIDTHFOUND=WIDTHFOUND+1;
00807  M01S00723.fsesubs +++|      END
00808  M01S00724.fsesubs +++|    ELSE QUIT=TRUE;
00809  M01S00725.fsesubs +++|    END
00810  M01S00726.fsesubs +++|
00811  M01S00727.fsesubs +++|  END                          # OF GETLNUM        #
00812  M01S00728.fsesubs +++|
00813  M01S00729.fsesubs +++|
00814  M01S00730.fsesubs +++|PROC SETLNUM;
00815  M01S00731.fsesubs +++|  BEGIN
00816  M01S00732.fsesubs +++|#
00817  M01S00733.fsesubs +++|**        SETLNUM - FORMAT SEQUENCE NUMBER ONTO INTERNAL LINE.
00818  M01S00734.fsesubs +++|*
00819  M01S00735.fsesubs +++|*         SETLNUM ADJUSTS THE WIDTH OF ANY EXISTING SEQUENCE
00820  M01S00736.fsesubs +++|*         NUMBER, THEN PLACES THE NEW SEQUENCE NUMBER VALUE ON
00821  M01S00737.fsesubs +++|*         THE LINE.
00822  M01S00738.fsesubs +++|*
00823  M01S00739.fsesubs +++|*         ENTRY  (LIN) - EXISTING INTERNAL FORMAT LINE IMAGE.
00824  M01S00740.fsesubs +++|*                (LINENO) - NEW SEQUENCE VALUE.
00825  M01S00741.fsesubs +++|*
00826  M01S00742.fsesubs +++|*         EXIT   (LIN) - FIXED UP.
00827  M01S00743.fsesubs +++|*
00828  M01S00744.fsesubs +++|*         MACROS SETCHAR.
00829  M01S00745.fsesubs +++|*
00830  M01S00746.fsesubs +++|*         CALLS  GETLNUM, LSHIFT, RSHIFT.
00831  M01S00747.fsesubs +++|*
00832  M01S00748.fsesubs +++|*         NOTES  USES LINENO THEN RESTORES IT.
00833  M01S00749.fsesubs +++|#
00834  M01S00750.fsesubs +++|  ITEM TMP1,TMP2,TMP3;
00835  M01S00751.fsesubs +++|
00836  M01S00752.fsesubs +++|  IF NUMBERED[CURFILE] EQ 0 THEN RETURN;
00837  M01S00753.fsesubs +++|  TMP2=LINENO;
00838  M01S00754.fsesubs +++|  GETLNUM;                   # CHECK EXISTING NUMBER DIGITS          #
00839  M01S00755.fsesubs +++|  LINENO=TMP2;               # RESTORE #
00840  M01S00756.fsesubs +++|  IF WIDTHFOUND NQ NUMWIDTH THEN
00841  M01S00757.fsesubs +++|    BEGIN
00842  M01S00758.fsesubs +++|    LSHIFT(LIN,WIDTHFOUND,WIDTHFOUND);
00843  M01S00759.fsesubs +++|    RSHIFT(LIN,0,NUMWIDTH);
00844  M01S00760.fsesubs +++|    END
00845  M01S00761.fsesubs +++|  FOR TMP1=NUMWIDTH-1 STEP -1 UNTIL 0 DO
00846  M01S00762.fsesubs +++|    BEGIN
00847  M01S00763.fsesubs +++|    TMP3=MOD(TMP2,10)+CDIGIT0;
00848  M01S00764.fsesubs +++|    SETCHAR(LINE,TMP1,TMP3);
00849  M01S00765.fsesubs +++|    TMP2=TMP2/10;
00850  M01S00766.fsesubs +++|    END
00851  M01S00767.fsesubs +++|  IF BLANKS NQ 0 THEN
00852  M01S00768.fsesubs +++|    BEGIN
00853  M01S00769.fsesubs +++|    GETCHAR(LINE,NUMWIDTH,TMP1);
00854  M01S00770.fsesubs +++|    IF TMP1 NQ CBLANK THEN RSHIFT(LIN,NUMWIDTH,1);
00855  M01S00771.fsesubs +++|    SETCHAR(LINE,NUMWIDTH,CBLANK);
00856  M01S00772.fsesubs +++|    END
00857  M01S00773.fsesubs +++|  END                         # OF SETLNUM        #
00858  M01S00774.fsesubs +++|
00859  M01S00775.fsesubs +++|
00860  M01S00776.fsesubs +++|PROC TRIMPAD;
00861  M01S00777.fsesubs +++|  BEGIN
00862  M01S00778.fsesubs +++|#
00863  M01S00779.fsesubs +++|**        TRIMPAD - TRIM OFF TRAILING BLANKS, PAD SEQUENCE.
00864  M01S00780.fsesubs +++|*
00865  M01S00781.fsesubs +++|*         TRIMPAD TRIMS ALL TRAILING BLANKS FOR A LINE IMAGE IN
00866  M01S00782.fsesubs +++|*         THE INTERNAL CHARACTER SET, AND FOR SEQUENCE-NUMBERED
00867  M01S00783.fsesubs +++|*         FILES IT ALSO PADS A BLANK ON LINES CONSISTING ONLY OF
00868  M01S00784.fsesubs +++|*         A SEQUENCE NUMBER.
00869  M01S00785.fsesubs +++|*
00870  M01S00786.fsesubs +++|*         ENTRY  (LIN) - LINE IMAGE TO BE PROCESSED.
00871  M01S00787.fsesubs +++|*                NUMBERED[CURFILE] - INDICATES SEQUENCE PADDING.
00872  M01S00788.fsesubs +++|*
00873  M01S00789.fsesubs +++|*         EXIT   (LIN) - UPDATED.
00874  M01S00790.fsesubs +++|*
00875  M01S00791.fsesubs +++|*         MACROS SETCHAR.
00876  M01S00792.fsesubs +++|*
00877  M01S00793.fsesubs +++|*         CALLS  TRIM, PAD, GETLNUM.
00878  M01S00794.fsesubs +++|*
00879  M01S00795.fsesubs +++|*         USES   WIDTHFOUND.
00880  M01S00796.fsesubs +++|*
00881  M01S00797.fsesubs +++|*         NOTES  USES LINENO THEN RESTORES IT.
00882  M01S00798.fsesubs +++|#
00883  M01S00799.fsesubs +++|  ITEM TMP1;
00884  M01S00800.fsesubs +++|  IF NUMBERED[CURFILE] NQ 0 THEN
00885  M01S00801.fsesubs +++|    BEGIN
00886  M01S00802.fsesubs +++|    TMP1=LINENO;
00887  M01S00803.fsesubs +++|    GETLNUM;
00888  M01S00804.fsesubs +++|    LINENO=TMP1;
00889  M01S00805.fsesubs +++|    IF LENGTH(LIN) LS WIDTHFOUND+BLANKS THEN PAD(LIN);
00890  M01S00806.fsesubs +++|    TRIM(LIN,WIDTHFOUND+BLANKS);
00891  M01S00807.fsesubs +++|    END
00892  M01S00808.fsesubs +++|  ELSE SETCHAR(LINE,FASTLNB(LIN),CENDLINE);
00893  M01S00809.fsesubs +++|  END                          # OF TRIMPAD #
00894  M01S00810.fsesubs +++|
00895  M01S00811.fsesubs +++|
00896  M01S00812.fsesubs +++|PROC TRIM(ALIN,MINIMUM);
00897  M01S00813.fsesubs +++|  BEGIN
00898  M01S00814.fsesubs +++|#
00899  M01S00815.fsesubs +++|**        TRIM - TRIM OFF TRAILING BLANKS.
00900  M01S00816.fsesubs +++|*
00901  M01S00817.fsesubs +++|*         ENTRY  ALIN - LINE IMAGE TO PROCESS.
00902  M01S00818.fsesubs +++|*                MINIMUM - MINIMUM LENGTH TO RESPECT.
00903  M01S00819.fsesubs +++|*
00904  M01S00820.fsesubs +++|*         EXIT   ALIN - UPDATED.
00905  M01S00821.fsesubs +++|*
00906  M01S00822.fsesubs +++|*         MACROS SETCHAR.
00907  M01S00823.fsesubs +++|*
00908  M01S00824.fsesubs +++|*         CALLS  FASTLNB.
00909  M01S00825.fsesubs +++|#
00910  M01S00826.fsesubs +++|  ARRAY ALIN[0:99]; ITEM ALINE;
00911  M01S00827.fsesubs +++|  ITEM MINIMUM;
00912  M01S00828.fsesubs +++|  SETCHAR(ALINE,MAX(MINIMUM,FASTLNB(ALIN)),CENDLINE);
00913  M01S00829.fsesubs +++|  END                          # OF TRIM #
00914  M01S00830.fsesubs +++|
00915  M01S00831.fsesubs +++|
00916  M01S00832.fsesubs +++|PROC PAD(ALIN);
00917  M01S00833.fsesubs +++|  BEGIN
00918  M01S00834.fsesubs +++|#
00919  M01S00835.fsesubs +++|**        PAD - ADD TRAILING BLANKS TO INTERNAL LINE IMAGE.
00920  M01S00836.fsesubs +++|*
00921  M01S00837.fsesubs +++|*         ENTRY  ALIN - LINE IMAGE TO PROCESS.
00922  M01S00838.fsesubs +++|*
00923  M01S00839.fsesubs +++|*         EXIT   ALIN - PADDED TO MAXIMUM WIDTH.
00924  M01S00840.fsesubs +++|*
00925  M01S00841.fsesubs +++|*         MACROS SETCHAR.
00926  M01S00842.fsesubs +++|*
00927  M01S00843.fsesubs +++|*         CALLS  LENGTH.
00928  M01S00844.fsesubs +++|#
00929  M01S00845.fsesubs +++|  ARRAY ALIN [0:99]; ITEM ALINE;
00930  M01S00846.fsesubs +++|  ITEM TMP1,TMP2,TMP3;
00931  M01S00847.fsesubs +++|  ARRAY CHARMASKS [0:7]; ITEM MASK=[
00932  M01S00848.fsesubs +++|    O"03777777777777777777",
00933  M01S00849.fsesubs +++|    O"00017777777777777777",
00934  M01S00850.fsesubs +++|    O"00000077777777777777",
00935  M01S00851.fsesubs +++|    O"00000000377777777777",
00936  M01S00852.fsesubs +++|    O"00000000001777777777",
00937  M01S00853.fsesubs +++|    O"00000000000007777777",
00938  M01S00854.fsesubs +++|    O"00000000000000037777",
00939  M01S00855.fsesubs +++|    O"00000000000000000177"];
00940  M01S00856.fsesubs +++|  TMP2=LENGTH(ALIN);
00941  M01S00857.fsesubs +++|  TMP3=TMP2/8;
00942  M01S00858.fsesubs +++|  TMP2=MASK[TMP2 LAN 7];
00943  M01S00859.fsesubs +++|  ALINE[TMP3]=(ALINE[TMP3] LAN (LNO TMP2)) LOR (ALLBLANKS LAN TMP2);
00944  M01S00860.fsesubs +++|  FOR TMP1=TMP3+1 STEP 1 UNTIL BUFWID DO ALINE[TMP1]=ALLBLANKS;
00945  M01S00861.fsesubs +++|  SETCHAR(ALINE,BUFCHAR,CENDLINE);
00946  M01S00862.fsesubs +++|  END                         # OF PAD  #
00947  M01S00863.fsesubs +++|PAGE                         # BASIC IO ROUTINES #
00948  M01S00864.fsesubs +++|
00949  M01S00865.fsesubs +++|#
00950  M01S00866.fsesubs +++|**        WORKIO INTERFACE ROUTINES.
00951  M01S00867.fsesubs +++|*
00952  M01S00868.fsesubs +++|*         THE WORKIO ENTRY POINTS (POS,FWD,BAK,INS,DEL,REP) ALL NEED
00953  M01S00869.fsesubs +++|*         ADDITIONAL PROCESSING FOR MOST EDITOR OPERATIONS, SO THE
00954  M01S00870.fsesubs +++|*         EDITOR CONTAINS SEVERAL INTERFACE ROUTINES.  THOSE NAMED
00955  M01S00871.fsesubs +++|*         WITH "X" APPEAR IN THE SCREEN MODULE AND SYNCHRONIZE THE
00956  M01S00872.fsesubs +++|*         SCREEN.  "Y" ENTRY POINTS PERFORM SECRET CHANGES WITHOUT
00957  M01S00873.fsesubs +++|*         FLAGGING EITHER FILE BRACKET AS CHANGED.  "Z" ENTRY POINTS
00958  M01S00874.fsesubs +++|*         PERFORM POINTER VECTOR RELOCATION AND FLAG THE CURRENT FILE
00959  M01S00875.fsesubs +++|*         BRACKET AS CHANGED.  NOTE THAT THE "X" INTERFACES USE "Z".
00960  M01S00876.fsesubs +++|*
00961  M01S00877.fsesubs +++|*         "Z" INTERFACES ALSO PERFORM AUDIT TRAIL MAINTENANCE WHEN
00962  M01S00878.fsesubs +++|*         THE "UNDO" FACILITY IS ENABLED. "TMPLINE" IS USED FOR THIS.
00963  M01S00879.fsesubs +++|*
00964  M01S00880.fsesubs +++|*         THUS ALL INTERFACES EXCEPT "Y" REQUIRE "CURFILE" SETUP AS
00965  M01S00881.fsesubs +++|*         AN IMPLIED PARAMETER UPON ENTRY.
00966  M01S00882.fsesubs +++|*
00967  M01S00883.fsesubs +++|*         LINEBUF IS A BASED ARRAY WHICH IS POINTED TO THE DESIRED
00968  M01S00884.fsesubs +++|*         LINE BUFFER FOR WORKIO.  REDEFINITION OF LINEBUF IS
00969  M01S00885.fsesubs +++|*         RESTRICTED IN THAT IT MUST POINT TO "LIN" ANY TIME THE
00970  M01S00886.fsesubs +++|*         MULTI-USER EDITOR CODE REACHES AN INTERNAL SWAP EVENT.  THE
00971  M01S00887.fsesubs +++|*         RESULT OF THIS RESTRICTION IS THAT LINEBUF ALMOST ALWAYS
00972  M01S00888.fsesubs +++|*         IS POINTED AT "LIN", EXCEPT FOR SPECIAL SEQUENCES (AUDIT
00973  M01S00889.fsesubs +++|*         TRAIL FOR UNDO) WHICH ARE KNOWN TO NOT PERMIT INTERNAL SWAP.
00974  M01S00890.fsesubs +++|*         ALSO, THE POS ENTRY TO WORKIO WILL NOT COPY TEXT INTO THE
00975  M01S00891.fsesubs +++|*         LINE BUFFER IF THE LINE ORDINAL IN NEWCURL IS COMPLEMENTED.
00976  M01S00892.fsesubs +++|#
00977  M01S00893.fsesubs +++|
00978  M01S00894.fsesubs +++|PROC POSZ(PARM);
00979  M01S00895.fsesubs +++|  IOBEGIN(POSZ)
00980  M01S00896.fsesubs +++|  ITEM PARM;
00981  M01S00897.fsesubs +++|  NEWCURL=PARM;
00982  M01S00898.fsesubs +++|  POS;
00983  M01S00899.fsesubs +++|  IOEND                       # OF POSZ #
00984  M01S00900.fsesubs +++|
00985  M01S00901.fsesubs +++|
00986  M01S00902.fsesubs +++|PROC FWDZ;
00987  M01S00903.fsesubs +++|  IOBEGIN(FWDZ)
00988  M01S00904.fsesubs +++|  FWD;
00989  M01S00905.fsesubs +++|  IOEND                       # OF FWDZ #
00990  M01S00906.fsesubs +++|
00991  M01S00907.fsesubs +++|
00992  M01S00908.fsesubs +++|PROC BAKZ;
00993  M01S00909.fsesubs +++|  IOBEGIN(BAKZ)
00994  M01S00910.fsesubs +++|  BAK;
00995  M01S00911.fsesubs +++|  IOEND                       # OF BAKZ #
00996  M01S00912.fsesubs +++|
00997  M01S00913.fsesubs +++|
00998  M01S00914.fsesubs +++|PROC INSZ;
00999  M01S00915.fsesubs +++|  IOBEGIN(INSZ)
01000  M01S00916.fsesubs +++|  AUDITINS;                  # AUDIT INSERTION   #
01001  M01S00917.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01002  M01S00918.fsesubs +++|  INS;
01003  M01S00919.fsesubs +++|  RELOCATE(+1);
01004  M01S00920.fsesubs +++|  IOEND                       # OF INSZ #
01005  M01S00921.fsesubs +++|
01006  M01S00922.fsesubs +++|
01007  M01S00923.fsesubs +++|PROC DELZ;
01008  M01S00924.fsesubs +++|  IOBEGIN(DELZ)
01009  M01S00925.fsesubs +++|  AUDITDEL;                  # AUDIT DELETION    #
01010  M01S00926.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01011  M01S00927.fsesubs +++|  DELETEDONE=TRUE;
01012  M01S00928.fsesubs +++|  RELOCATE(-1);
01013  M01S00929.fsesubs +++|  DEL;
01014  M01S00930.fsesubs +++|  POSZ(CURRENT);
01015  M01S00931.fsesubs +++|  IOEND                       # OF DELZ           #
01016  M01S00932.fsesubs +++|
01017  M01S00933.fsesubs +++|
01018  M01S00934.fsesubs +++|PROC REPZ;
01019  M01S00935.fsesubs +++|  IOBEGIN(REPZ)
01020  M01S00936.fsesubs +++|  AUDITREP;                  # AUDIT REPLACE     #
01021  M01S00937.fsesubs +++|  CHANGED[CURFILE] = 1 LAN (LNO LOCKED[CURFILE]) ;
01022  M01S00938.fsesubs +++|  REP;
01023  M01S00939.fsesubs +++|  IOEND                       # OF REPZ           #
01024  M01S00940.fsesubs +++|
01025  M01S00941.fsesubs +++|
01026  M01S00942.fsesubs +++|PROC INSY;
01027  M01S00943.fsesubs +++|  IOBEGIN(INSY)
01028  M01S00944.fsesubs +++|  INS;
01029  M01S00945.fsesubs +++|  RELOCATE(+1);
01030  M01S00946.fsesubs +++|  IOEND                       # OF INSY #
01031  M01S00947.fsesubs +++|
01032  M01S00948.fsesubs +++|
01033  M01S00949.fsesubs +++|PROC DELY;
01034  M01S00950.fsesubs +++|  IOBEGIN(DELY)
01035  M01S00951.fsesubs +++|  DELETEDONE=TRUE;
01036  M01S00952.fsesubs +++|  RELOCATE(-1);
01037  M01S00953.fsesubs +++|  DEL;
01038  M01S00954.fsesubs +++|  POSZ(CURRENT);
01039  M01S00955.fsesubs +++|  IOEND                       # OF DELY           #
01040  M01S00956.fsesubs +++|
01041  M01S00957.fsesubs +++|
01042  M01S00958.fsesubs +++|PROC REPY;
01043  M01S00959.fsesubs +++|  IOBEGIN(REPY)
01044  M01S00960.fsesubs +++|  REP;
01045  M01S00961.fsesubs +++|  IOEND                       # OF REPY           #
01046  M01S00962.fsesubs +++|
01047  M01S00963.fsesubs +++|
01048  M01S00964.fsesubs +++|PAGE                         # BASIC ROUTINES FOR POSITION STACK     #
01049  M01S00965.fsesubs +++|
01050  M01S00966.fsesubs +++|
01051  M01S00967.fsesubs +++|PROC PUSH;
01052  M01S00968.fsesubs +++|  BEGIN
01053  M01S00969.fsesubs +++|#
01054  M01S00970.fsesubs +++|**        PUSH - PUSH CURRENT LINE/FILE ONTO STACK.
01055  M01S00971.fsesubs +++|*
01056  M01S00972.fsesubs +++|*         ENTRY  CURRENT - LINE POSITION TO SAVE.
01057  M01S00973.fsesubs +++|*                CURFILE - FILE ASSOCIATION TO SAVE.
01058  M01S00974.fsesubs +++|*
01059  M01S00975.fsesubs +++|*         EXIT   STACKPTR, REGLINE, STKFILE - UPDATED.
01060  M01S00976.fsesubs +++|#
01061  M01S00977.fsesubs +++|  IF STACKPTR GQ MAXSTACK THEN
01062  M01S00978.fsesubs +++|    BEGIN
01063  M01S00979.fsesubs +++|    FATAL(" FILE POSITION STACK OVERFLOWED.$");
01064  M01S00980.fsesubs +++|    END
01065  M01S00981.fsesubs +++|  STACKPTR=STACKPTR+1;
01066  M01S00982.fsesubs +++|  REGLINE[STACKPTR]=CURRENT;
01067  M01S00983.fsesubs +++|  STKFILE[STACKPTR]=CURFILE;
01068  M01S00984.fsesubs +++|  END                         # OF PUSH #
01069  M01S00985.fsesubs +++|
01070  M01S00986.fsesubs +++|
01071  M01S00987.fsesubs +++|PROC POP;
01072  M01S00988.fsesubs +++|  IOBEGIN(POP)
01073  M01S00989.fsesubs +++|#
01074  M01S00990.fsesubs +++|**        POP - POP LINE/FILE POSITION FROM STACK.
01075  M01S00991.fsesubs +++|*
01076  M01S00992.fsesubs +++|*         ENTRY  REGLINE, STACKPTR, STKFILE - CONTAIN SAVED POSITION.
01077  M01S00993.fsesubs +++|*
01078  M01S00994.fsesubs +++|*         EXIT   LIN, CURRENT, CURFILE - RESTORED POSITION/TEXT.
01079  M01S00995.fsesubs +++|*                STACKPTR - UPDATED.
01080  M01S00996.fsesubs +++|#
01081  M01S00997.fsesubs +++|  IF STACKPTR LS 0 THEN
01082  M01S00998.fsesubs +++|    BEGIN
01083  M01S00999.fsesubs +++|    FATAL(" FILE POSITION STACK UNDERFLOWED (1).$");
01084  M01S01000.fsesubs +++|    END
01085  M01S01001.fsesubs +++|  POSZ(REGLINE[STACKPTR]);
01086  M01S01002.fsesubs +++|  CURFILE=STKFILE[STACKPTR];
01087  M01S01003.fsesubs +++|  STACKPTR=STACKPTR-1;
01088  M01S01004.fsesubs +++|  IOEND                       # OF POP  #
01089  M01S01005.fsesubs +++|
01090  M01S01006.fsesubs +++|
01091  M01S01007.fsesubs +++|PROC RELOCATE(PARM);
01092  M01S01008.fsesubs +++|  BEGIN
01093  M01S01009.fsesubs +++|  ITEM PARM;
01094  M01S01010.fsesubs +++|#
01095  M01S01011.fsesubs +++|**        RELOCATE - INTERFACE TO UPDATE VECTOR OF RELOCATABLES.
01096  M01S01012.fsesubs +++|*
01097  M01S01013.fsesubs +++|*         ENTRY  PARM - RELOCATION FACTOR.
01098  M01S01014.fsesubs +++|*                CURRENT - RELOCATION THRESHHOLD.
01099  M01S01015.fsesubs +++|*
01100  M01S01016.fsesubs +++|*         EXIT   REGSTACK - UPDATED.
01101  M01S01017.fsesubs +++|*
01102  M01S01018.fsesubs +++|*         CALLS  FASTRLC.
01103  M01S01019.fsesubs +++|#
01104  M01S01020.fsesubs +++|  FASTRLC(REGSTACK,MAXREG+1,CURRENT,PARM);
01105  M01S01021.fsesubs +++|  END                         # OF RELOCATE       #
01106  M01S01022.fsesubs +++|
01107  M01S01023.fsesubs +++|
01108  M01S01024.fsesubs +++|PAGE                         # AUDIT TRAIL ROUTINES        #
01109  M01S01025.fsesubs +++|
01110  M01S01026.fsesubs +++|
01111  M01S01027.fsesubs +++|#
01112  M01S01028.fsesubs +++|**        AUDIT TRAIL FACILITY.
01113  M01S01029.fsesubs +++|*
01114  M01S01030.fsesubs +++|*         AUDIT TRAIL ROUTINES PRESERVE THE CURRENT POSITION AND THE
01115  M01S01031.fsesubs +++|*         "LIN" BUFFER.  "TMPLIN" IS USED WIDELY.
01116  M01S01032.fsesubs +++|*
01117  M01S01033.fsesubs +++|*         FOR AN INSERTION, THE AUDIT RECORD IS A SINGLE DESCRIPTOR
01118  M01S01034.fsesubs +++|*         LINE WITH "I" TYPE AND THE FLOAT POSITION.
01119  M01S01035.fsesubs +++|*
01120  M01S01036.fsesubs +++|*         FOR A DELETION, WE WRITE THE OLD VERSION OF THE LINE THEN A
01121  M01S01037.fsesubs +++|*         DESCRIPTOR WITH "D" TYPE, FILE ID, AND FILE POSITION.
01122  M01S01038.fsesubs +++|*
01123  M01S01039.fsesubs +++|*         FOR A REPLACEMENT, WE WRITE THE OLD VERSION OF THE LINE AND
01124  M01S01040.fsesubs +++|*         AN "R" DESCRIPTOR, FILE ID, AND FILE POSITION.
01125  M01S01041.fsesubs +++|*
01126  M01S01042.fsesubs +++|*         TO CHECK POINT A MAJOR STOPPING POINT, WE WRITE A "C"
01127  M01S01043.fsesubs +++|*         DESCRIPTOR.  THIS INCLUDES FILE ID'S FOR BOTH OPEN
01128  M01S01044.fsesubs +++|*         BRACKETS, AND SPLIT SCREEN DIMENSIONS.
01129  M01S01045.fsesubs +++|*
01130  M01S01046.fsesubs +++|*         TO TERMINATE A SERIES OF MAJOR STOPPING POINTS, WE WRITE
01131  M01S01047.fsesubs +++|*         A "E" DESCRIPTOR.  THIS HAS NO PARAMETERS ON IT.
01132  M01S01048.fsesubs +++|*
01133  M01S01049.fsesubs +++|*         THIS AUDIT TRAIL FORMAT IS VIABLE ONLY WHEN SCANNED IN
01134  M01S01050.fsesubs +++|*         REVERSE ORDER, AND WHEN IT IS ASSURED TO REPRESENT ALL
01135  M01S01051.fsesubs +++|*         CHANGES.  THIS IMPLIES THAT THE "AUDITOFF" FLAG CAN BE SET
01136  M01S01052.fsesubs +++|*         TO DISABLE THE FACILITY, BUT IN ORDER TO CLEAR THE FLAG AND
01137  M01S01053.fsesubs +++|*         RE-ENABLE THE FACILITY, IT IS MANDATORY TO ISSUE AN "END"
01138  M01S01054.fsesubs +++|*         DESCRIPTOR AS DESCRIBED IN THE PREVIOUS PARAGRAPH.  THE
01139  M01S01055.fsesubs +++|*         UNDO INTERPRETER MUST NOT GO BEYOND THIS POINT.
01140  M01S01056.fsesubs +++|*
01141  M01S01057.fsesubs +++|*         NOTE THAT ENTRY POINTS AUDITEVENT AND AUDITNUM AND AUDITTEXT
01142  M01S01058.fsesubs +++|*         ARE USED ONLY BY AUDIT ROUTINES.  ENTRY POINTS AUDITINS,
01143  M01S01059.fsesubs +++|*         AUDITDEL, AND AUDITREP ARE INTENDED TO BE USED ONLY BY INSZ,
01144  M01S01060.fsesubs +++|*         DELZ, AND REPZ.  AUDITCHECK AND AUDITSYNCH ARE THE ENTRY
01145  M01S01061.fsesubs +++|*         POINTS SUITABLE FOR GENERAL USAGE.  AUDITTRAIL IS USED ONLY
01146  M01S01062.fsesubs +++|*         BY AUDIT ROUTINES.  AUDITTRAIL AND AUDITSYNCH ARE THE ONLY
01147  M01S01063.fsesubs +++|*         ROUTINES TO ACTUALLY MANIPULATE THE AUDIT BUFFERING AREA.
01148  M01S01064.fsesubs +++|*
01149  M01S01065.fsesubs +++|*         ROUTINES WHICH CALL AUDITTRAIL MUST SET UP THE BASE
01150  M01S01066.fsesubs +++|*         ADDRESS FOR LINEBUF, AND RESTORE IT.  SUCH ROUTINES
01151  M01S01067.fsesubs +++|*         CURRENTLY RESTORE THAT BASE ADDRESS BY ASSUMING THE
01152  M01S01068.fsesubs +++|*         CORRECT ADDRESS IS "LIN" RATHER THAN BY ACTUALLY
01153  M01S01069.fsesubs +++|*         SAVING AND RESTORING.  THUS, WE IMPOSE A GENERAL
01154  M01S01070.fsesubs +++|*         RESTRICTION THAT ANY EDITOR CODE WHICH CAUSES AUDITABLE
01155  M01S01071.fsesubs +++|*         WORKFILE CHANGES MUST USE "LIN" AS THE ADDRESS OF LINEBUF.
01156  M01S01072.fsesubs +++|*
01157  M01S01073.fsesubs +++|*         THE AUDIT TRAIL IS STAGED THRU A DEDICATED MEMORY BUFFER.
01158  M01S01074.fsesubs +++|*         AUDITSYNCH PURGES THIS BUFFER INTO THE AUDIT BRACKET OF
01159  M01S01075.fsesubs +++|*         THE WORKFILE, SO ANY ROUTINE THAT NEEDS TO ACCESS THE
01160  M01S01076.fsesubs +++|*         AUDIT TRAIL (I.E, THE UNDO FACILITY) MUST CALL AUDITSYNCH.
01161  M01S01077.fsesubs +++|*         THE STAGING AREA PROVIDES PERFORMANCE OPTIMIZATION BY
01162  M01S01078.fsesubs +++|*         DEFERRING AND BATCHING WORKFILE ACCESSES.
01163  M01S01079.fsesubs +++|*
01164  M01S01080.fsesubs +++|*         ALL AUDIT ROUTINES, WHICH ARE ALLOWED TO BE CALLED FROM
01165  M01S01081.fsesubs +++|*         OUTSIDE OF OTHER AUDIT ROUTINES, INSPECT THE AUDITOFF
01166  M01S01082.fsesubs +++|*         FLAG TO SEE IF THE FACILITY IS DISABLED.  ROUTINES WHICH
01167  M01S01083.fsesubs +++|*         ARE LOCAL TO THE AUDIT FACILITY DO NOT CHECK THIS FLAG,
01168  M01S01084.fsesubs +++|*         BOTH FOR EFFICIENCY AND TO ASSURE THAT STAGED DATA CAN
01169  M01S01085.fsesubs +++|*         BE HANDLED RIGOROUSLY.
01170  M01S01086.fsesubs +++|#
01171  M01S01087.fsesubs +++|
01172  M01S01088.fsesubs +++|
01173  M01S01089.fsesubs +++|PROC AUDITINS;
01174  M01S01090.fsesubs +++|  IOBEGIN(AUDITINS)
01175  M01S01091.fsesubs +++|#
01176  M01S01092.fsesubs +++|**        AUDITINS - AUDIT INTERFACE FOR INSZ.
01177  M01S01093.fsesubs +++|*
01178  M01S01094.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01179  M01S01095.fsesubs +++|#
01180  M01S01096.fsesubs +++|  IF AUDITOFF THEN IORET
01181  M01S01097.fsesubs +++|  AUDITEVENT(CLETTERI);
01182  M01S01098.fsesubs +++|  IOEND                       # OF AUDITINS       #
01183  M01S01099.fsesubs +++|
01184  M01S01100.fsesubs +++|
01185  M01S01101.fsesubs +++|PROC AUDITDEL;
01186  M01S01102.fsesubs +++|  IOBEGIN(AUDITDEL)
01187  M01S01103.fsesubs +++|#
01188  M01S01104.fsesubs +++|**        AUDITDEL - AUDIT INTERFACE FOR DELZ.
01189  M01S01105.fsesubs +++|*
01190  M01S01106.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01191  M01S01107.fsesubs +++|#
01192  M01S01108.fsesubs +++|  IF AUDITOFF THEN IORET
01193  M01S01109.fsesubs +++|  AUDITTEXT;
01194  M01S01110.fsesubs +++|  AUDITEVENT(CLETTERD);
01195  M01S01111.fsesubs +++|  IOEND                       # OF AUDITDEL       #
01196  M01S01112.fsesubs +++|
01197  M01S01113.fsesubs +++|
01198  M01S01114.fsesubs +++|PROC AUDITREP;
01199  M01S01115.fsesubs +++|  IOBEGIN(AUDITREP)
01200  M01S01116.fsesubs +++|#
01201  M01S01117.fsesubs +++|**        AUDITREP - AUDIT INTERFACE FOR REPZ.
01202  M01S01118.fsesubs +++|*
01203  M01S01119.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01204  M01S01120.fsesubs +++|#
01205  M01S01121.fsesubs +++|  IF AUDITOFF THEN IORET
01206  M01S01122.fsesubs +++|  AUDITTEXT;
01207  M01S01123.fsesubs +++|  AUDITEVENT(CLETTERR);
01208  M01S01124.fsesubs +++|  IOEND                       # OF AUDITREP       #
01209  M01S01125.fsesubs +++|
01210  M01S01126.fsesubs +++|
01211  M01S01127.fsesubs +++|PROC AUDITNUM(POS,NUM);
01212  M01S01128.fsesubs +++|  BEGIN
01213  M01S01129.fsesubs +++|#
01214  M01S01130.fsesubs +++|**        AUDITNUM - FORMAT NUMERIC VALUE INTO AUDIT DESCRIPTOR.
01215  M01S01131.fsesubs +++|*
01216  M01S01132.fsesubs +++|*         ENTRY  NUM, POS - VALUE AND CHARACTER POSITION.
01217  M01S01133.fsesubs +++|*
01218  M01S01134.fsesubs +++|*         EXIT   TMPLIN - CONTAINS FORMATTED VALUE.
01219  M01S01135.fsesubs +++|*
01220  M01S01136.fsesubs +++|*         MACROS SETCHAR.
01221  M01S01137.fsesubs +++|*
01222  M01S01138.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01223  M01S01139.fsesubs +++|#
01224  M01S01140.fsesubs +++|  ITEM POS, NUM, TMP2, TMP3, TMP4;
01225  M01S01141.fsesubs +++|  TMP2=NUM;
01226  M01S01142.fsesubs +++|  FOR TMP3=9 STEP -1 UNTIL 0 DO
01227  M01S01143.fsesubs +++|    BEGIN
01228  M01S01144.fsesubs +++|    TMP4=CDIGIT0+MOD(TMP2,10);
01229  M01S01145.fsesubs +++|    TMP2=TMP2/10;
01230  M01S01146.fsesubs +++|    SETCHAR(TMPLINE,POS+TMP3,TMP4);
01231  M01S01147.fsesubs +++|    END
01232  M01S01148.fsesubs +++|  SETCHAR(TMPLINE,POS+10,CBLANK);
01233  M01S01149.fsesubs +++|  END                       # OF AUDITNUM       #
01234  M01S01150.fsesubs +++|
01235  M01S01151.fsesubs +++|
01236  M01S01152.fsesubs +++|PROC AUDITEVENT(PARM);
01237  M01S01153.fsesubs +++|  IOBEGIN(AUDITEVENT)
01238  M01S01154.fsesubs +++|#
01239  M01S01155.fsesubs +++|**        AUDITEVENT - FORMAT AND TRANSMIT DESCRIPTOR.
01240  M01S01156.fsesubs +++|*
01241  M01S01157.fsesubs +++|*         ENTRY  PARM - TYPE OF DESCRIPTOR.
01242  M01S01158.fsesubs +++|*
01243  M01S01159.fsesubs +++|*         EXIT   DESCRIPTOR TRANSMITTED TO AUDIT TRAIL.
01244  M01S01160.fsesubs +++|*
01245  M01S01161.fsesubs +++|*         MACROS SETCHAR.
01246  M01S01162.fsesubs +++|*
01247  M01S01163.fsesubs +++|*         CALLS  AUDITNUM, AUDITTRAIL.
01248  M01S01164.fsesubs +++|*
01249  M01S01165.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01250  M01S01166.fsesubs +++|*
01251  M01S01167.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01252  M01S01168.fsesubs +++|#
01253  M01S01169.fsesubs +++|  ITEM PARM;
01254  M01S01170.fsesubs +++|
01255  M01S01171.fsesubs +++|  SETCHAR(TMPLINE,0,PARM);
01256  M01S01172.fsesubs +++|  # END OF PARAMETER USAGE #
01257  M01S01173.fsesubs +++|  AUDITNUM(1,CURFILE);
01258  M01S01174.fsesubs +++|  AUDITNUM(12,FDLF(CURFILE));
01259  M01S01175.fsesubs +++|  AUDITNUM(23,CURRENT-TOPF(CURFILE));
01260  M01S01176.fsesubs +++|  SETCHAR(TMPLINE,34,CENDLINE);
01261  M01S01177.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01262  M01S01178.fsesubs +++|  AUDITTRAIL;
01263  M01S01179.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01264  M01S01180.fsesubs +++|  IOEND                       # OF AUDITEVENT     #
01265  M01S01181.fsesubs +++|
01266  M01S01182.fsesubs +++|
01267  M01S01183.fsesubs +++|PROC AUDITTEXT;
01268  M01S01184.fsesubs +++|  IOBEGIN(AUDITTEXT)
01269  M01S01185.fsesubs +++|#
01270  M01S01186.fsesubs +++|**        AUDITTEXT - TRANSMIT TEXT LINE TO AUDIT TRAIL.
01271  M01S01187.fsesubs +++|*
01272  M01S01188.fsesubs +++|*         ENTRY  CURRENT - POINTS TO OLD LINE IMAGE IN WORKFILE.
01273  M01S01189.fsesubs +++|*
01274  M01S01190.fsesubs +++|*         CALLS  POSZ, AUDITTRAIL.
01275  M01S01191.fsesubs +++|*
01276  M01S01192.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01277  M01S01193.fsesubs +++|*
01278  M01S01194.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01279  M01S01195.fsesubs +++|#
01280  M01S01196.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01281  M01S01197.fsesubs +++|  POSZ(CURRENT);              # READ OLD VERSION  #
01282  M01S01198.fsesubs +++|  AUDITTRAIL;
01283  M01S01199.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01284  M01S01200.fsesubs +++|  IOEND                       # OF AUDITTEXT      #
01285  M01S01201.fsesubs +++|
01286  M01S01202.fsesubs +++|
01287  M01S01203.fsesubs +++|PROC AUDITCHECK;
01288  M01S01204.fsesubs +++|  IOBEGIN(AUDITCHECK)
01289  M01S01205.fsesubs +++|#
01290  M01S01206.fsesubs +++|**        AUDITCHECK - ISSUE CHECKPOINT TO AUDIT TRAIL.
01291  M01S01207.fsesubs +++|*
01292  M01S01208.fsesubs +++|*         ENTRY  AUDITUSED - INDICATES IF ANYTHING AUDITED SINCE
01293  M01S01209.fsesubs +++|*                    LAST CHECKPOINT.
01294  M01S01210.fsesubs +++|*
01295  M01S01211.fsesubs +++|*         EXIT   AUDITUSED - CLEAR TO SHOW CHECKPOINT IS MOST
01296  M01S01212.fsesubs +++|*                    RECENT AUDIT ENTRY.
01297  M01S01213.fsesubs +++|*
01298  M01S01214.fsesubs +++|*         MACROS SETCHAR.
01299  M01S01215.fsesubs +++|*
01300  M01S01216.fsesubs +++|*         CALLS  AUDITNUM, AUDITTRAIL.
01301  M01S01217.fsesubs +++|*
01302  M01S01218.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01303  M01S01219.fsesubs +++|*
01304  M01S01220.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01305  M01S01221.fsesubs +++|#
01306  M01S01222.fsesubs +++|  IF AUDITOFF THEN IORET
01307  M01S01223.fsesubs +++|  IF NOT AUDITUSED THEN IORET
01308  M01S01224.fsesubs +++|  SETCHAR(TMPLINE,0,CLETTERC);
01309  M01S01225.fsesubs +++|  AUDITNUM(1,FDLF(1));
01310  M01S01226.fsesubs +++|  AUDITNUM(12,FDLF(2));
01311  M01S01227.fsesubs +++|  AUDITNUM(23,NUMROWS[2]);
01312  M01S01228.fsesubs +++|  SETCHAR(TMPLINE,34,CENDLINE);
01313  M01S01229.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01314  M01S01230.fsesubs +++|  AUDITTRAIL;
01315  M01S01231.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01316  M01S01232.fsesubs +++|  AUDITUSED=FALSE;
01317  M01S01233.fsesubs +++|  IOEND                       # OF AUDITCHECK     #
01318  M01S01234.fsesubs +++|
01319  M01S01235.fsesubs +++|
01320  M01S01236.fsesubs +++|PROC AUDITEND;
01321  M01S01237.fsesubs +++|  IOBEGIN(AUDITEND)
01322  M01S01238.fsesubs +++|#
01323  M01S01239.fsesubs +++|**        AUDITEND - ISSUE TERMINATOR TO AUDIT TRAIL.
01324  M01S01240.fsesubs +++|*
01325  M01S01241.fsesubs +++|*         EXIT   AUDITUSED - CLEAR TO SHOW CHECKPOINT IS MOST
01326  M01S01242.fsesubs +++|*                    RECENT AUDIT ENTRY.
01327  M01S01243.fsesubs +++|*
01328  M01S01244.fsesubs +++|*         MACROS SETCHAR.
01329  M01S01245.fsesubs +++|*
01330  M01S01246.fsesubs +++|*         CALLS  AUDITTRAIL.
01331  M01S01247.fsesubs +++|*
01332  M01S01248.fsesubs +++|*         USES   TMPLIN, P<LINEBUF>.
01333  M01S01249.fsesubs +++|*
01334  M01S01250.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01335  M01S01251.fsesubs +++|#
01336  M01S01252.fsesubs +++|  IF AUDITOFF THEN IORET
01337  M01S01253.fsesubs +++|  SETCHAR(TMPLINE,0,CLETTERE);
01338  M01S01254.fsesubs +++|  SETCHAR(TMPLINE,1,CENDLINE);
01339  M01S01255.fsesubs +++|  P<LINEBUF>=LOC(TMPLIN);
01340  M01S01256.fsesubs +++|  AUDITTRAIL;
01341  M01S01257.fsesubs +++|  P<LINEBUF>=LOC(LIN);
01342  M01S01258.fsesubs +++|  AUDITUSED=FALSE;
01343  M01S01259.fsesubs +++|  IOEND                       # OF AUDITEND     #
01344  M01S01260.fsesubs +++|
01345  M01S01261.fsesubs +++|
01346  M01S01262.fsesubs +++|PROC AUDITTRAIL;
01347  M01S01263.fsesubs +++|  IOBEGIN(AUDITTRAIL);
01348  M01S01264.fsesubs +++|#
01349  M01S01265.fsesubs +++|**        AUDITTRAIL - TRANSMIT LINE IMAGE TO AUDIT TRAIL.
01350  M01S01266.fsesubs +++|*
01351  M01S01267.fsesubs +++|*         ENTRY  P<LINEBUF> - POINTS TO INTERNAL LINE IMAGE.
01352  M01S01268.fsesubs +++|*
01353  M01S01269.fsesubs +++|*         EXIT   LINE IMAGE IS STAGED IN BUFFER.
01354  M01S01270.fsesubs +++|*                AUDITUSED - SET TO SHOW SOMETHING AUDITED SINCE
01355  M01S01271.fsesubs +++|*                    MOST RECENT CHECKPOINT.
01356  M01S01272.fsesubs +++|*                AUDITNEXT - UPDATED.
01357  M01S01273.fsesubs +++|*
01358  M01S01274.fsesubs +++|*         CALLS  LINESZ, MOVELN, AUDITSYNCH.
01359  M01S01275.fsesubs +++|*
01360  M01S01276.fsesubs +++|*         USES   P<TOO>.
01361  M01S01277.fsesubs +++|*
01362  M01S01278.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01363  M01S01279.fsesubs +++|#
01364  M01S01280.fsesubs +++|  ITEM TMP1;                 # USE INSTANTLY     #
01365  M01S01281.fsesubs +++|  TMP1=LINESZ(LINEBUF);      # MEASURE TEXT, FIX EOL BITS  #
01366  M01S01282.fsesubs +++|  IF TMP1 GQ AUDITSIZE-AUDITNEXT THEN AUDITSYNCH;    # ASSURE ROOM   #
01367  M01S01283.fsesubs +++|  P<TOO>=LOC(AUDITWORD[AUDITNEXT]);
01368  M01S01284.fsesubs +++|  AUDITNEXT=AUDITNEXT+MOVELN(LINEBUF,TOO);       # QUEUE THIS RECORD #
01369  M01S01285.fsesubs +++|  AUDITUSED=TRUE;
01370  M01S01286.fsesubs +++|  IOEND                       # OF AUDITTRAIL     #
01371  M01S01287.fsesubs +++|
01372  M01S01288.fsesubs +++|
01373  M01S01289.fsesubs +++|PROC AUDITSYNCH;
01374  M01S01290.fsesubs +++|  IOBEGIN(AUDITSYNCH);
01375  M01S01291.fsesubs +++|#
01376  M01S01292.fsesubs +++|**        AUDITSYNCH - FLUSH STAGING BUFFER INTO WORKFILE.
01377  M01S01293.fsesubs +++|*
01378  M01S01294.fsesubs +++|*         EXIT   CURA(AUDITCTL), AUDITNEXT - UPDATED.
01379  M01S01295.fsesubs +++|*
01380  M01S01296.fsesubs +++|*         USES   P<LINEBUF> WITH RESTORATION.
01381  M01S01297.fsesubs +++|*                "TEMP" WITH RESTORATION.
01382  M01S01298.fsesubs +++|*
01383  M01S01299.fsesubs +++|*         CALLS  PUSHTEMP, POPTEMP, PUSH, POP, POSZ, INS,
01384  M01S01300.fsesubs +++|*                RELOCATE.
01385  M01S01301.fsesubs +++|*
01386  M01S01302.fsesubs +++|*         NOTE   REFER TO FACILITY HEADER.
01387  M01S01303.fsesubs +++|*                REQUIRES WORKIO CAPABILITY TO POSITION FILE WITH
01388  M01S01304.fsesubs +++|*                NO COPY OF LINE IMAGE.
01389  M01S01305.fsesubs +++|#
01390  M01S01306.fsesubs +++|  PUSHTEMP;
01391  M01S01307.fsesubs +++|  TEMP=LOC(LINEBUF);         # SAVE    #
01392  M01S01308.fsesubs +++|  PUSHTEMP;
01393  M01S01309.fsesubs +++|  PUSH;
01394  M01S01310.fsesubs +++|  P<LINEBUF>=0;
01395  M01S01311.fsesubs +++|  POSZ(CURA(AUDITCTL));      # INVISIBLY         #
01396  M01S01312.fsesubs +++|  TEMP=0;
01397  M01S01313.fsesubs +++|  WHYLE TEMP LS AUDITNEXT DO
01398  M01S01314.fsesubs +++|    BEGIN
01399  M01S01315.fsesubs +++|    P<LINEBUF>=LOC(AUDITWORD[TEMP]);   # TAKE DIRECTLY FROM QUEUE    #
01400  M01S01316.fsesubs +++|    TEMP=TEMP+LINESZ(LINEBUF);         # MEASURE, FIX EOL BITS       #
01401  M01S01317.fsesubs +++|    INS;
01402  M01S01318.fsesubs +++|    RELOCATE(+1);
01403  M01S01319.fsesubs +++|    END
01404  M01S01320.fsesubs +++|  CURA(AUDITCTL)=CURRENT;
01405  M01S01321.fsesubs +++|  P<LINEBUF>=0;
01406  M01S01322.fsesubs +++|  POP;                       # INVISIBLY         #
01407  M01S01323.fsesubs +++|  POPTEMP;
01408  M01S01324.fsesubs +++|  P<LINEBUF>=TEMP;           # RESTORE #
01409  M01S01325.fsesubs +++|  POPTEMP;
01410  M01S01326.fsesubs +++|  AUDITNEXT=0;
01411  M01S01327.fsesubs +++|  IOEND                       # OF AUDITSYNCH     #
01412  M01S01328.fsesubs +++|PAGE                         # FILE MANAGEMENT   #
01413  M01S01329.fsesubs +++|
01414  M01S01330.fsesubs +++|
01415  M01S01331.fsesubs +++|PROC FORMFDL(FILEPARM);
01416  M01S01332.fsesubs +++|  BEGIN
01417  M01S01333.fsesubs +++|#
01418  M01S01334.fsesubs +++|**        FORMFDL - FORMAT FILE DESCRIPTOR LINE.
01419  M01S01335.fsesubs +++|*
01420  M01S01336.fsesubs +++|*         FORMFDL CREATES A FILE DESCRIPTOR LINE BASED ON THE CURRENT
01421  M01S01337.fsesubs +++|*         ATTRIBUTES OF A FILE IMAGE WHICH IS ONE OF THE TWO BRACKETED
01422  M01S01338.fsesubs +++|*         FILES.  THE FORMAT OF THE FDL IS- CHARACTER POSITION 0 =
01423  M01S01339.fsesubs +++|*         FILE NAME, 8 = YES/NO FOR THE WRITE LOCKOUT, 10 = YES/NO FOR
01424  M01S01340.fsesubs +++|*         CHANGES MADE, 12 = YES/NO FOR 6/12 ASCII CHARACTER SET, 14 =
01425  M01S01341.fsesubs +++|*         YES/NO FOR NUMBERED MODE, 16 = SIZE OF FILE, AND 27 =
01426  M01S01342.fsesubs +++|*         CURRENT POSITION IN FILE.  IF THIS FORMAT IS TO BE CHANGED,
01427  M01S01343.fsesubs +++|*         CODE MUST ALSO BE CHANGED IN THE "GET STATUS" COMMAND AND IN
01428  M01S01344.fsesubs +++|*         THE SESSION RESUMPTION LOGIC OF FSEMAIN.
01429  M01S01345.fsesubs +++|*
01430  M01S01346.fsesubs +++|*         ENTRY  FILEPARM - WHICH FILE BRACKET TO SUMMARIZE.
01431  M01S01347.fsesubs +++|*
01432  M01S01348.fsesubs +++|*         EXIT   LIN - CONTAINS DESCRIPTOR TEXT.
01433  M01S01349.fsesubs +++|*
01434  M01S01350.fsesubs +++|*         MACROS SETCHAR.
01435  M01S01351.fsesubs +++|*
01436  M01S01352.fsesubs +++|*         CALLS  FORMNUM(INTERNAL).
01437  M01S01353.fsesubs +++|#
01438  M01S01354.fsesubs +++|
01439  M01S01355.fsesubs +++|  ITEM FILEPARM, TMP1,TMP2,TMP3,TMP4;
01440  M01S01356.fsesubs +++|
01441  M01S01357.fsesubs +++|  PROC FORMNUM(PARM);
01442  M01S01358.fsesubs +++|    BEGIN
01443  M01S01359.fsesubs +++|    ITEM PARM;
01444  M01S01360.fsesubs +++|    TMP4=PARM;
01445  M01S01361.fsesubs +++|    FOR TMP1=9 STEP -1 UNTIL 0 DO
01446  M01S01362.fsesubs +++|      BEGIN
01447  M01S01363.fsesubs +++|      C<TMP1,1>TMP3=MOD(TMP4,10)+O"33";
01448  M01S01364.fsesubs +++|      TMP4=TMP4/10;
01449  M01S01365.fsesubs +++|      END
01450  M01S01366.fsesubs +++|    FOR TMP1=0 STEP 1 UNTIL 9 DO
01451  M01S01367.fsesubs +++|      BEGIN
01452  M01S01368.fsesubs +++|      TMP4=C<TMP1,1>TMP3;
01453  M01S01369.fsesubs +++|      TMP4=XLTDSPINT[TMP4];
01454  M01S01370.fsesubs +++|      SETCHAR(LINE,TMP2,TMP4);
01455  M01S01371.fsesubs +++|      TMP2=TMP2+1;
01456  M01S01372.fsesubs +++|      END
01457  M01S01373.fsesubs +++|    SETCHAR(LINE,TMP2,CBLANK);
01458  M01S01374.fsesubs +++|    TMP2=TMP2+1;
01459  M01S01375.fsesubs +++|    END
01460  M01S01376.fsesubs +++|
01461  M01S01377.fsesubs +++|
01462  M01S01378.fsesubs +++|  # START OF FORMFDL #
01463  M01S01379.fsesubs +++|
01464  M01S01380.fsesubs +++|  TMP2=0;
01465  M01S01381.fsesubs +++|  FOR TMP1=0 STEP 1 UNTIL 6 DO
01466  M01S01382.fsesubs +++|    BEGIN
01467  M01S01383.fsesubs +++|    C<0,7>TMP3=PADNAME(FILENAM[FILEPARM]);
01468  M01S01384.fsesubs +++|    TMP3=C<TMP1,1>TMP3;
01469  M01S01385.fsesubs +++|    TMP3=XLTDSPINT[TMP3];
01470  M01S01386.fsesubs +++|    SETCHAR(LINE,TMP2,TMP3);
01471  M01S01387.fsesubs +++|    TMP2=TMP2+1;
01472  M01S01388.fsesubs +++|    END
01473  M01S01389.fsesubs +++|  FOR TMP2=7 STEP 1 UNTIL 15 DO SETCHAR(LINE,TMP2,CBLANK);
01474  M01S01390.fsesubs +++|  SETCHAR(LINE,8,LOCKED[FILEPARM]+CDIGIT0);
01475  M01S01391.fsesubs +++|  SETCHAR(LINE,10,CHANGED[FILEPARM]+CDIGIT0);
01476  M01S01392.fsesubs +++|  SETCHAR(LINE,12,ASCII[FILEPARM]+CDIGIT0);
Line S01393 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01477  M02S01393.ns2607  ---|  SETCHAR(LINE,14,NUMBERED[FILEPARM]+CDIGIT0);
01478  M01S00001.ns2607  +++|  SETCHAR(LINE,14,INITNMBR[FILEPARM]+CDIGIT0);
01479  M01S01394.fsesubs +++|  TMP2=16;
01480  M01S01395.fsesubs +++|  FORMNUM(BOTF(FILEPARM)-TOPF(FILEPARM)-1);
01481  M01S01396.fsesubs +++|  FORMNUM(CURF(FILEPARM)-TOPF(FILEPARM));
01482  M01S01397.fsesubs +++|  SETCHAR(LINE,TMP2,CENDLINE);
01483  M01S01398.fsesubs +++|
01484  M01S01399.fsesubs +++|  END                            # OF FORMFDL     #
01485  M01S01400.fsesubs +++|
01486  M01S01401.fsesubs +++|
01487  M01S01402.fsesubs +++|PROC SCANFDL(NAME);
01488  M01S01403.fsesubs +++|  BEGIN
01489  M01S01404.fsesubs +++|#
01490  M01S01405.fsesubs +++|**        SCANFDL - ANALYZE FILE DESCRIPTOR LINE.
01491  M01S01406.fsesubs +++|*
01492  M01S01407.fsesubs +++|*         ENTRY  LIN - CONTAINS FDL TEXT.
01493  M01S01408.fsesubs +++|*
01494  M01S01409.fsesubs +++|*         EXIT   NAME - FILE NAME.
01495  M01S01410.fsesubs +++|*                SCNFDLOCK, SCNFDCHNG, SCNFDASCI, SCNFDNUMB,
01496  M01S01411.fsesubs +++|*                SCNFDSIZE, SCNFDCURF - UPDATED.
01497  M01S01412.fsesubs +++|*
01498  M01S01413.fsesubs +++|*         USES   TMPLIN.
01499  M01S01414.fsesubs +++|*                CMDLIN, SCANPOS, KEYWDTYPE - WITH RESTORATION.
01500  M01S01415.fsesubs +++|*
01501  M01S01416.fsesubs +++|*         CALLS  COPYLIN, TOKEN.
01502  M01S01417.fsesubs +++|*
01503  M01S01418.fsesubs +++|*         NOTE   CALLER MUST NON-REENTRANTLY USE SCNFDXXXX.
01504  M01S01419.fsesubs +++|#
01505  M01S01420.fsesubs +++|  ITEM NAME C(7);
01506  M01S01421.fsesubs +++|  ITEM HOLDSCAN, HOLDSEARCH;
01507  M01S01422.fsesubs +++|
01508  M01S01423.fsesubs +++|  COPYLIN(CMDLIN,TMPLIN);
01509  M01S01424.fsesubs +++|  HOLDSCAN=TOKENPOS;
01510  M01S01425.fsesubs +++|  HOLDSEARCH=KEYWDTYPE;
01511  M01S01426.fsesubs +++|  COPYLIN(LIN,CMDLIN);
01512  M01S01427.fsesubs +++|  SCANPOS=0;
01513  M01S01428.fsesubs +++|  KEYWDTYPE=0;
01514  M01S01429.fsesubs +++|  TOKEN;
01515  M01S01430.fsesubs +++|  NAME=TOKENSYM;
01516  M01S01431.fsesubs +++|  KEYWDTYPE=1;
01517  M01S01432.fsesubs +++|  TOKEN;
01518  M01S01433.fsesubs +++|  SCNFDLOCK=TOKENVAL;
01519  M01S01434.fsesubs +++|  TOKEN;
01520  M01S01435.fsesubs +++|  SCNFDCHNG=TOKENVAL;
01521  M01S01436.fsesubs +++|  TOKEN;
01522  M01S01437.fsesubs +++|  SCNFDASCI=TOKENVAL;
01523  M01S01438.fsesubs +++|  TOKEN;
Line S01439 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2607
Seq #  *Modification Id* Act 
----------------------------+
01524  M02S01439.ns2607  ---|  SCNFDNUMB=TOKENVAL;
01525  M01S00002.ns2607  +++|  SCNFDNUMB=TOKENVAL LAN 1;
01526  M01S00003.ns2607  +++|  SCNFDINIT=TOKENVAL/2;
01527  M01S01440.fsesubs +++|  TOKEN;
01528  M01S01441.fsesubs +++|  SCNFDSIZE=TOKENVAL;
01529  M01S01442.fsesubs +++|  TOKEN;
01530  M01S01443.fsesubs +++|  SCNFDCURF=TOKENVAL;
01531  M01S01444.fsesubs +++|
01532  M01S01445.fsesubs +++|  COPYLIN(TMPLIN,CMDLIN);
01533  M01S01446.fsesubs +++|  SCANPOS=HOLDSCAN;
01534  M01S01447.fsesubs +++|  KEYWDTYPE=HOLDSEARCH;
01535  M01S01448.fsesubs +++|  TOKEN;
01536  M01S01449.fsesubs +++|
01537  M01S01450.fsesubs +++|  END                     #  OF SCANFDL     #
01538  M01S01451.fsesubs +++|
01539  M01S01452.fsesubs +++|
01540  M01S01453.fsesubs +++|PROC OPENFILE;
01541  M01S00001.ns2172  +++|# TITLE OPENFILE - BRACKET AN INTERNAL FILE IMAGE. #
01542  M01S00002.ns2172  +++|
01543  M01S01454.fsesubs +++|  IOBEGIN(OPENFILE)
01544  M01S00003.ns2172  +++|
01545  M01S01455.fsesubs +++|#
01546  M01S01456.fsesubs +++|**        OPENFILE - BRACKET AN INTERNAL FILE IMAGE.
01547  M01S01457.fsesubs +++|*
01548  M01S01458.fsesubs +++|*         OPENFILE GETS THE REQUESTED FILE INTO ONE OF THE INTERNAL
01549  M01S01459.fsesubs +++|*         FILE BRACKETS, BY HOOK OR BY CROOK.  VALUES OF THE
01550  M01S01460.fsesubs +++|*         CHARPARM AND GETPARM ENTRIES CAN FORCE DISPOSAL OF AN
01551  M01S01461.fsesubs +++|*         EXTANT INTERNAL FILE IMAGE WITH A FRESH FILE BUILD.
01552  M01S01462.fsesubs +++|*         FOR CASES WHERE ANY INTERNAL IMAGE IS UNACCEPTABLE, THE
01553  M01S01463.fsesubs +++|*         RESULTS OF THE FIRST OPENFILE ARE COMPARED WITH THE ENTRY
01554  M01S01464.fsesubs +++|*         CONDITIONS, AND OPENFILE MIGHT THEN BE CALLED ONCE MORE.
01555  M01S01465.fsesubs +++|*
01556  M01S01466.fsesubs +++|*         ENTRY  READNAM - FILE NAME.
01557  M01S01467.fsesubs +++|*                FILNUM - BRACKET TO OPEN INTO.
01558  M01S01468.fsesubs +++|*                CHARPARM - CHARACTER SET PREFERENCE.
01559  M01S01469.fsesubs +++|*                GETPARM - PREFERENCE FOR INTERNAL/LOCAL/PERMANENT.
01560  M01S01470.fsesubs +++|*
01561  M01S01471.fsesubs +++|*         EXIT   DESIRED FILE IS IN BRACKET.  OTHER BRACKET MAY
01562  M01S01472.fsesubs +++|*                BE NULLED OUT IF OTHER BRACKET WAS SAME AS THIS
01563  M01S01473.fsesubs +++|*                BRACKET, AND THE CURRENT BRACKET REQUIRES NULLOUT.
01564  M01S01474.fsesubs +++|*
Line S01475 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01565  M02S01475.ns2172  ---|*         CALLS  ACCESSFILE, PUSHTEMP, POPTEMP.
01566  M01S00004.ns2172  +++|*         CALLS  ACCESSFILE, FORCEPAINT, POPTEMP, PUSHTEMP.
01567  M01S01476.fsesubs +++|*
01568  M01S01477.fsesubs +++|*         USES   TEMP WITH RESTORATION.
01569  M01S01478.fsesubs +++|#
Line S01479 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01570  M02S01479.ns2172  ---|  ACCESSFILE;                # REALLY DOES THE WORK        #
Line S01480 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01571  M02S01480.ns2172  ---|  IF CHARPARM NQ 0 OR GETPARM GQ 2 THEN
Line S01481 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01572  M02S01481.ns2172  ---|    BEGIN                     # MAKE SURE GOT IT RIGHT      #
Line S01482 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01573  M02S01482.ns2172  ---|    IF GETPARM GQ 2 OR (ASCII[FILNUM] NQ CHARPARM AND
Line S01483 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01574  M02S01483.ns2172  ---|      (ASCII[FILNUM] GQ 2 OR CHARPARM GQ 2)) THEN
Line S01484 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01575  M02S01484.ns2172  ---|      BEGIN                   # RE-OPENED OLD FILE ...      #
Line S01485 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01576  M02S01485.ns2172  ---|      PUSHTEMP;
Line S01486 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01577  M02S01486.ns2172  ---|      TEMP=FILNUM;
Line S01487 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01578  M02S01487.ns2172  ---|      FOR FILNUM=1 STEP 1 UNTIL 2 DO
Line S01488 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01579  M02S01488.ns2172  ---|        BEGIN                # ZAP ANY BRACKETS WITH OLD FILE #
Line S01489 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01580  M02S01489.ns2172  ---|        IF FDLF(FILNUM) EQ FDLF(TEMP) THEN
Line S01490 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01581  M02S01490.ns2172  ---|          BEGIN
Line S01491 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01582  M02S01491.ns2172  ---|          FILENAM[FILNUM]="ZZZNULL";
Line S01492 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01583  M02S01492.ns2172  ---|          LOCKED[FILNUM]=1;
Line S01493 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01584  M02S01493.ns2172  ---|          CLOSEFILE;
Line S01494 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01585  M02S01494.ns2172  ---|          END
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  +++|
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  +++|
01637  M01S00051.ns2172  +++|  ACCESSFILE;                        # ACCESS THE FILE #
01638  M01S00006.fsesu5  +++|
01639  M01S00007.fsesu5  +++|  CONTROL IFEQ SINGLE,1;
01640  M01S00004.ns2607  +++|  SCNFDINIT = 0;                     # PRESET NOT INITIAL FILE #
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 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01644  M02S00055.fsesu5  ---|    PUSHTEMP;
Line S00056 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01645  M02S00056.fsesu5  ---|    TEMP=FILNUM;
Line S00057 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01646  M02S00057.fsesu5  ---|    FOR FILNUM=1 STEP 1 UNTIL 2 DO   # REMOVE BRACKETS FOR OLD FILE #
Line S00058 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01647  M02S00058.fsesu5  ---|      BEGIN
Line S00059 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01648  M02S00059.fsesu5  ---|      IF FDLF(FILNUM) EQ FDLF(TEMP) THEN
Line S00060 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01649  M02S00060.fsesu5  ---|        BEGIN
Line S00061 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01650  M02S00061.fsesu5  ---|        FILENAM[FILNUM]="ZZZNULL";
Line S00062 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01651  M02S00062.fsesu5  ---|        LOCKED[FILNUM]=1;
Line S00063 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01652  M02S00063.fsesu5  ---|        CLOSEFILE;                   # CLOSE OLD FILE #
Line S01495 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01653  M02S01495.fsesu5  ---|        END
Line S01496 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
M03 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01654  M03S01496.fsesu5  ---|      FILNUM=TEMP;
Line S01497 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
M03 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01655  M03S01497.fsesu5  ---|      POPTEMP;
Line S01498 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
M03 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01656  M03S01498.fsesu5  ---|      LASTSIZE[1]=-1;
Line S01499 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
M03 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01657  M03S01499.fsesu5  ---|      LASTSIZE[2]=-1;
Line S01500 Modification History
M01 (Added by) fsesubs
M02 (Updated by) ns2172
M03 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01658  M03S01500.fsesu5  ---|      ACCESSFILE;            # THIS TIME GUARANTEED RIGHT  #
Line S01501 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01659  M02S01501.fsesu5  ---|      END
Line S00064 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01660  M02S00064.fsesu5  ---|    FILNUM=TEMP;
Line S00065 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01661  M02S00065.fsesu5  ---|    POPTEMP;
Line S00066 Modification History
M01 (Added by) ns2172
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01662  M02S00066.fsesu5  ---|    ACCESSFILE;                      # ACCESS THE OLD FILE #
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
01669  M01S00005.ns2607  +++|          SCNFDINIT == INITFILE[FILNUM];   # CLEAR/SET INITIAL FILE #
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  M01S01502.fsesubs +++|    END
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 (Added by) fsesubs
M02 (Updated by) ns2172
Seq #  *Modification Id* Act 
----------------------------+
01685  M02S01503.ns2172  ---|  IOEND                       # OF OPENFILE       #
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;
01689  M01S00028.fsesu5  +++|    PUSHTEMP;
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
01694  M01S00029.fsesu5  +++|    POPTEMP;
01695  M01S00074.ns2172  +++|    END
01696  M01S00075.ns2172  +++|
01697  M01S00076.ns2172  +++|  IOEND  # OPENFILE #
01698  M01S01504.fsesubs +++|
01699  M01S01505.fsesubs +++|
01700  M01S01506.fsesubs +++|PROC ACCESSFILE;
01701  M01S01507.fsesubs +++|  IOBEGIN(ACCESSFILE)
01702  M01S01508.fsesubs +++|#
01703  M01S01509.fsesubs +++|**        ACCESSFILE - ACCESS A FILE.
01704  M01S01510.fsesubs +++|*
01705  M01S01511.fsesubs +++|*        ACCESSFILE ATTEMPTS TO LOGICALLY OPEN A FILE BY IDENTIFYING
01706  M01S01512.fsesubs +++|*        IT AS ALREADY OPEN IN ONE OR BOTH FILE BRACKETS, OR AS
01707  M01S01513.fsesubs +++|*        AVAILABLE FOR QUICK OPEN FROM THE FILE DIRECTORY LINES.  IF
Line S01514 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01708  M02S01514.fsesu5  ---|*        THESE METHODS FAIL THEN WE CALL ADDFILE.  NOTE THAT THERE
Line S01515 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01709  M02S01515.fsesu5  ---|*        CAN BE SITUATIONS WHERE THE USER ACTUALLY WANTS THE FILE
Line S01516 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01710  M02S01516.fsesu5  ---|*        BRACKETS AND DIRECTORY IGNORED SO THAT ADDFILE WILL BE
Line S01517 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01711  M02S01517.fsesu5  ---|*        CALLED TO READ THE LOCAL FILE AFRESH.  TO ALLOW FOR THIS,
Line S01518 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01712  M02S01518.fsesu5  ---|*        THE RULE IS THAT ACCESSFILE IS ONLY CALLED BY OPENFILE, AND
Line S01519 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01713  M02S01519.fsesu5  ---|*        THE USER ALWAYS USES OPENFILE.  OPENFILE IS THEN CONSIDERED
Line S01520 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01714  M02S01520.fsesu5  ---|*        RESPONSIBLE TO HANDLE OVERRIDE.
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  M01S01521.fsesubs +++|*
01723  M01S01522.fsesubs +++|*         ENTRY  SEE OPENFILE.
01724  M01S01523.fsesubs +++|*
Line S01524 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01725  M02S01524.fsesu5  ---|*         EXIT   ALL FILE BRACKET STRUCTURES UPDATED.
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  M01S01525.fsesubs +++|*
Line S01526 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01730  M02S01526.fsesu5  ---|*         CALLS  PADNAME, CLOSEFILE, PUSHTEMP, POPTEMP, QQSINGLE,
Line S01527 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01731  M02S01527.fsesu5  ---|*                POSZ, PUSH, POP, SCANFDL, NOPOP, ADDFILE.
Line S01528 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01732  M02S01528.fsesu5  ---|*
Line S01529 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01733  M02S01529.fsesu5  ---|*         NOTE   IN MULTI-USER MODE, THIS ROUTINE IS CAPABLE OF
Line S01530 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01734  M02S01530.fsesu5  ---|*                ACCESSING AN EXTANT INTERNAL FILE IMAGE, BUT CANNOT
Line S01531 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01735  M02S01531.fsesu5  ---|*                READ LOCAL FILES WHEN NEEDED.  QQSINGLE IS THEN CALLED
Line S01532 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01736  M02S01532.fsesu5  ---|*                TO WORK OUR WAY INTO THE SAME CODE IN THE SINGLE-USER
Line S01533 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01737  M02S01533.fsesu5  ---|*                EDITOR VIA REDUNDANT PROCESSING OF SAME COMMAND.
Line S01534 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01738  M02S01534.fsesu5  ---|*                THIS RESTRICTS THE MULTI-USER CALLER TO BE A
Line S01535 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01739  M02S01535.fsesu5  ---|*                BONA-FIDE COMMAND PROCESSOR, OR TO HAVE ABSOLUTE
Line S01536 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01740  M02S01536.fsesu5  ---|*                CONFIDENCE THAT AN INTERNAL IMAGE IS AVAILABLE.
01741  M01S00040.fsesu5  +++|*         CALLS  ADDFILE, CLOSEFILE, NOPOP, PADNAME, POP, POPTEMP,
01742  M01S00041.fsesu5  +++|*                POSZ, PUSH, PUSHTEMP, QQSINGLE, SCANFDL.
01743  M01S01537.fsesubs +++|#
01744  M01S01538.fsesubs +++|  ITEM NAME1 C(7), NAME2 C(7);  # USE INSTANTLY #
01745  M01S01539.fsesubs +++|
01746  M01S01540.fsesubs +++|  CURFILE=FILNUM;
01747  M01S01541.fsesubs +++|
01748  M01S01542.fsesubs +++|  NAME1=PADNAME(READNAM);
01749  M01S01543.fsesubs +++|  NAME2=PADNAME(FILENAM[FILNUM]);
01750  M01S01544.fsesubs +++|  IF NAME2 NQ " " AND NAME1 NQ NAME2 THEN CLOSEFILE;
01751  M01S01545.fsesubs +++|
01752  M01S01546.fsesubs +++|  PUSHTEMP;
01753  M01S01547.fsesubs +++|  FOR TEMP=1 STEP 1 UNTIL 2 DO
01754  M01S01548.fsesubs +++|    BEGIN
01755  M01S01549.fsesubs +++|    NAME1=PADNAME(READNAM);  # RECOMPUTE SINCE REENTERED   #
01756  M01S01550.fsesubs +++|    NAME2=PADNAME(FILENAM[TEMP]);
01757  M01S01551.fsesubs +++|    IF NAME1 EQ NAME2 THEN
01758  M01S01552.fsesubs +++|      BEGIN
01759  M01S01553.fsesubs +++|      IF TEMP NQ FILNUM THEN
01760  M01S01554.fsesubs +++|        BEGIN
01761  M01S01555.fsesubs +++|        FILEATTR[FILNUM] = FILEATTR[TEMP];
01762  M01S01556.fsesubs +++|        TOPF(FILNUM) = TOPF(TEMP);
01763  M01S01557.fsesubs +++|        BOTF(FILNUM) = BOTF(TEMP);
01764  M01S01558.fsesubs +++|        CURF(FILNUM) = CURF(TEMP);
01765  M01S01559.fsesubs +++|        FDLF(FILNUM) = FDLF(TEMP);
01766  M01S01560.fsesubs +++|        END
01767  M01S01561.fsesubs +++|      POSZ(CURF(FILNUM));
01768  M01S01562.fsesubs +++|      POPTEMP;
01769  M01S01563.fsesubs +++|      IORET
01770  M01S01564.fsesubs +++|      END
01771  M01S01565.fsesubs +++|    END
01772  M01S01566.fsesubs +++|  POPTEMP;
01773  M01S01567.fsesubs +++|
01774  M01S01568.fsesubs +++|  FILNUM=FILNUM LXR 3;       # REVERSE VALUE #
01775  M01S01569.fsesubs +++|  NAME1=PADNAME(FILENAM[FILNUM]);
01776  M01S01570.fsesubs +++|  IF NAME1 NQ " " THEN CLOSEFILE;      # ASSURES FDL UP TO DATE #
01777  M01S01571.fsesubs +++|  FILNUM=FILNUM LXR 3;       # RESTORE VALUE #
01778  M01S01572.fsesubs +++|
01779  M01S01573.fsesubs +++|  PUSH;
01780  M01S01574.fsesubs +++|  POSZ(TOPC(FILECTL)+1);
01781  M01S01575.fsesubs +++|  LINENO=BOTC(FILECTL);
01782  M01S01576.fsesubs +++|  WHYLE CURRENT LS BOTC(FILECTL) DO
01783  M01S01577.fsesubs +++|    BEGIN
01784  M01S01578.fsesubs +++|    # ONCE SCANFDL IS CALLED MUST USE RESULTS INSTANTLY #
01785  M01S01579.fsesubs +++|    SCANFDL(NAME2);
01786  M01S01580.fsesubs +++|    NAME1=PADNAME(READNAM);  # RECOMPUTE SINCE REENTERED   #
01787  M01S01581.fsesubs +++|    IF NAME2 EQ NAME1 THEN
01788  M01S01582.fsesubs +++|      BEGIN
01789  M01S01583.fsesubs +++|      FILENAM[FILNUM]=TRIMNAME(NAME2);
01790  M01S00006.ns2607  +++|      INITFILE[FILNUM]=SCNFDINIT;
01791  M01S01584.fsesubs +++|      LOCKED[FILNUM]=SCNFDLOCK;
01792  M01S01585.fsesubs +++|      CHANGED[FILNUM]=SCNFDCHNG;
01793  M01S01586.fsesubs +++|      ASCII[FILNUM]=SCNFDASCI;
01794  M01S01587.fsesubs +++|      NUMBERED[FILNUM]=SCNFDNUMB;
01795  M01S01588.fsesubs +++|      TOPF(FILNUM)=LINENO;
01796  M01S01589.fsesubs +++|      BOTF(FILNUM)=LINENO+1+SCNFDSIZE;
01797  M01S01590.fsesubs +++|      CURF(FILNUM)=TOPF(FILNUM)+SCNFDCURF;
01798  M01S01591.fsesubs +++|      FDLF(FILNUM)=CURRENT;
01799  M01S01592.fsesubs +++|      POSZ(CURF(FILNUM));
01800  M01S01593.fsesubs +++|      NOPOP;
01801  M01S01594.fsesubs +++|      IORET
01802  M01S01595.fsesubs +++|      END
01803  M01S01596.fsesubs +++|    LINENO=LINENO+1+SCNFDSIZE;
01804  M01S01597.fsesubs +++|    # END OF INSTANTANEOUS COMPUTATION #
01805  M01S01598.fsesubs +++|    FWDZ;
01806  M01S01599.fsesubs +++|    END
01807  M01S01600.fsesubs +++|  POP;
01808  M01S01601.fsesubs +++|
01809  M01S01602.fsesubs +++|  CONTROL IFEQ SINGLE,1;
Line S01603 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01810  M02S01603.fsesu5  ---|    ADDFILE;
01811  M01S00042.fsesu5  +++|  FILNUM = 0;                        # INDICATE FILE ACCESS NEEDED #
01812  M01S01604.fsesubs +++|  CONTROL FI;
01813  M01S01605.fsesubs +++|  CONTROL IFEQ MULTI,1;
Line S01606 Modification History
M01 (Added by) fsesubs
M02 (Updated by) fsesu5
Seq #  *Modification Id* Act 
----------------------------+
01814  M02S01606.fsesu5  ---|    GOTO QQSINGLE;
01815  M01S00043.fsesu5  +++|  GOTO QQSINGLE;                     # EXIT TO SINGLE-USER EDITOR #
01816  M01S01607.fsesubs +++|  CONTROL FI;
01817  M01S01608.fsesubs +++|
01818  M01S01609.fsesubs +++| IOEND                        # OF ACCESSFILE     #
01819  M01S01610.fsesubs +++|
01820  M01S01611.fsesubs +++|
01821  M01S01612.fsesubs +++|PROC CLOSEFILE;
01822  M01S01613.fsesubs +++|  IOBEGIN(CLOSEFILE)
01823  M01S01614.fsesubs +++|#
01824  M01S01615.fsesubs +++|**        CLOSEFILE - SAVE CURRENT FILE STATUS IN DESCRIPTOR LINE.
01825  M01S01616.fsesubs +++|*
01826  M01S01617.fsesubs +++|*         ENTRY  FILNUM - BRACKET TO CLOSE.
01827  M01S01618.fsesubs +++|*                ALL BRACKET STRUCTURES CONTAIN VALID STATUS.
01828  M01S01619.fsesubs +++|*
01829  M01S01620.fsesubs +++|*         EXIT   FILE DESCRIPTOR LINE UPDATED INTO FILE DIRECTORY.
01830  M01S01621.fsesubs +++|*
01831  M01S01622.fsesubs +++|*         CALLS  PUSH, POP, POSZ, REPY, FORMFDL.
01832  M01S01623.fsesubs +++|*
01833  M01S01624.fsesubs +++|*         NOTE   IF BOTH BRACKETS OPEN TO SAME FILE, CERTAIN
01834  M01S01625.fsesubs +++|*                ATTRIBUTES MUST BE MERGED.
01835  M01S01626.fsesubs +++|#
01836  M01S01627.fsesubs +++|  PUSH;
01837  M01S01628.fsesubs +++|  POSZ(FDLF(FILNUM));
01838  M01S01629.fsesubs +++|  IF FDLF(1) EQ FDLF(2) THEN
01839  M01S01630.fsesubs +++|    BEGIN
01840  M01S00007.ns2607  +++|    INITFILE[1]=INITFILE[1] LOR INITFILE[2];
01841  M01S01631.fsesubs +++|    LOCKED[1]=LOCKED[1] LOR LOCKED[2];
01842  M01S01632.fsesubs +++|    CHANGED[1]=CHANGED[1] LOR CHANGED[2];
01843  M01S00008.ns2607  +++|    INITFILE[2]=INITFILE[1];
01844  M01S01633.fsesubs +++|    LOCKED[2]=LOCKED[1];
01845  M01S01634.fsesubs +++|    CHANGED[2]=CHANGED[1];
01846  M01S01635.fsesubs +++|    END
01847  M01S01636.fsesubs +++|  FORMFDL(FILNUM);
01848  M01S01637.fsesubs +++|  REPY;
01849  M01S01638.fsesubs +++|  PUSHTEMP;
01850  M01S01639.fsesubs +++|  IF FILENAM[FILNUM] NQ "ZZZNULL" THEN
01851  M01S01640.fsesubs +++|    BEGIN
01852  M01S01641.fsesubs +++|    FOR TEMP=2 STEP 1 UNTIL 4 DO
01853  M01S01642.fsesubs +++|      BEGIN
01854  M01S01643.fsesubs +++|      NONTRIVFILE[FILNUM,TEMP]=NONTRIVFILE[FILNUM,TEMP-1];
01855  M01S01644.fsesubs +++|      END
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/fsesubs.txt ยท Last modified: by 127.0.0.1