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