Common COMCSNF

1 Modification

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.comcsnf +++|          CTEXT  COMCSNF - SORT NUMBERED FILE.
00002  M01S00002.comcsnf +++|          SPACE  4,10
00003  M01S00003.comcsnf +++|          IF     -DEF,QUAL$,1
00004  M01S00004.comcsnf +++|          QUAL   COMCSNF
00005  M01S00005.comcsnf +++|          BASE   D
Line S00006 Modification History
M01 (Added by) comcsnf
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M02S00006.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP.  1980.
00007  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M01S00007.comcsnf +++| SNF      SPACE  4,10
00009  M01S00008.comcsnf +++|***       SNF - SORT NUMBERED FILE.
00010  M01S00009.comcsnf +++|*         R. E. TATE         71/03/01.
00011  M01S00010.comcsnf +++|*         W. T. SACKETT      71/03/01.
00012  M01S00011.comcsnf +++|*         L. K. TUTTLE.      79/04/27.
00013  M01S00012.comcsnf +++|          SPACE  4,40
00014  M01S00013.comcsnf +++|***              COMCSNF SORTS A CODED, LINE NUMBERED FILE.  THE FILE
00015  M01S00014.comcsnf +++|*         IS READ IN SEGMENTS.  EACH SEGMENT IS SORTED AND THE RESULT
00016  M01S00015.comcsnf +++|*         MERGED WITH THE PREVIOUSLY SORTED PORTION OF THE FILE.  THE
00017  M01S00016.comcsnf +++|*         SORT IS BASED ON THE FIRST N DIGITS OF THE LINE NUMBER FOR
00018  M01S00017.comcsnf +++|*         EACH LINE.  THE LINE ENTERED LAST FOR A GIVEN NUMBER IS THE
00019  M01S00018.comcsnf +++|*         CORRECTION LINE TO REPLACE ANY LINE HAVING THE SAME NUMBER.
00020  M01S00019.comcsnf +++|*         A LINE NUMBER FOLLOWED BY AN EMPTY LINE (CR OR ONE BLANK AND
00021  M01S00020.comcsnf +++|*         CR) IS CONSIDERED A LINE DELETE.  A LINE NUMBER WITH MORE
00022  M01S00021.comcsnf +++|*         THAN N DIGITS IS NOT CHECKED FOR LINE DELETE.  THE CHARACTER
00023  M01S00022.comcsnf +++|*         SET IS DETERMINED FROM THE FIRST CHARACTER OF THE FILE IF
00024  M01S00023.comcsnf +++|*         NOT PASSED IN AS A PARAMETER.  IF AN ERROR CONDITION IS
00025  M01S00024.comcsnf +++|*         DETECTED THE FILE IS REWOUND UNALTERED AND THE ERROR CODE
00026  M01S00025.comcsnf +++|*         IS RETURNED IN B2.
00027  M01S00026.comcsnf +++|*
00028  M01S00027.comcsnf +++|*                COMCSNF HAS THE ABILITY TO HANDLE THEORETICALLY IN-
00029  M01S00028.comcsnf +++|*         FINITE LENGTH LINES BY PROCESSING THEM A SECTION AT A TIME.
00030  M01S00029.comcsnf +++|*         THERE ARE OF COURSE PRACTICAL LIMITATIONS IMPOSED BY THE
00031  M01S00030.comcsnf +++|*         LENGTH OF THE CIRCULAR I/O BUFFER.  FOR MORE INFORMATION
00032  M01S00031.comcsnf +++|*         ON THIS SEE ROUTINE *CEB*.  ALSO PERFORMANCE WILL BE DOWN-
00033  M01S00032.comcsnf +++|*         GRADED BY MANY LONG LINES.
00034  M01S00033.comcsnf +++|*
00035  M01S00034.comcsnf +++|*                IF SNF$ IS DEFINED BY THE CALLING PROGRAM THEN THE
00036  M01S00035.comcsnf +++|*         NUMBER OF LINES IN THE FILE AFTER SORTING WILL BE RETURNED
00037  M01S00036.comcsnf +++|*         IN (X6).
00038  M01S00037.comcsnf +++|          SPACE  4,10
00039  M01S00038.comcsnf +++|*         DATA AND EQUIVALENCES.
00040  M01S00039.comcsnf +++|
00041  M01S00040.comcsnf +++| LIMT     CON    0
00042  M01S00041.comcsnf +++| WKSTL    EQU    33          WORKING STORAGE BUFFER LENGTH
00043  M01S00042.comcsnf +++| PLAD     CON    0           ADDRESS OF PARTIAL LINE IN I/O BUFFER
00044  M01S00043.comcsnf +++| PLWC     CON    0           NUMBER OF WORDS IN PARTIAL LINE
00045  M01S00044.comcsnf +++| FNT2     CON    0           FNT NAME FROM FET *SCR1*
00046  M01S00045.comcsnf +++| FTYP     CON    0           FILE TYPE (0 = DIRECT ACCESS FILE)
00047  M01S00046.comcsnf +++| INPF     CON    0           INPUT FILE FET ADDRESS
00048  M01S00047.comcsnf +++| LAST     CON    -1          LAST LINE ON SCR
00049  M01S00048.comcsnf +++| NDIG     CON    5           NUMBER OF DIGITS TO SORT ON
00050  M01S00049.comcsnf +++| CPAR     CON    -1          CHARACTER SET FLAG
00051  M01S00050.comcsnf +++| DRFG     CON    0           DATA READ FLAG
00052  M01S00051.comcsnf +++| LLFG     CON    0           LONG LINE FLAG
00053  M01S00052.comcsnf +++| ERFG     CON    0           TEMPORARY STORAGE FOR ERROR FLAG
00054  M01S00053.comcsnf +++| SNF$     IF     DEF,SNF$
00055  M01S00054.comcsnf +++| NLSF     CON    0           NUMBER OF LINES IN FILE AFTER SORT
00056  M01S00055.comcsnf +++| SNF$     ENDIF
00057  M01S00056.comcsnf +++| SNF      SPACE  4,10
00058  M01S00057.comcsnf +++|**        TABLE OF CHARACTER SET PARAMETERS.
00059  M01S00058.comcsnf +++|*
00060  M01S00059.comcsnf +++|*T,       6/ SHIFT CNT, 18/ CHAR MASK, 18/ ZERO CHAR, 18/ BLANK CHAR.
Figure

0171829 BLANK CHAR. ZERO CHAR303536535459 ZERO CHAR CHAR MASK SHIFT CNT

00061  M01S00060.comcsnf +++|
00062  M01S00061.comcsnf +++|
00063  M01S00062.comcsnf +++| TPAR     VFD    6/06,18/0077B,18/33B,18/55B   6/12 DISPLAY CODE
00064  M01S00063.comcsnf +++|          VFD    6/12,18/7777B,18/60B,18/40B   ASCII8
00065  M01S00064.comcsnf +++| WKST     BSS    WKSTL       WORKING STORAGE FOR SCR TRANSFER TO SCR1
00066  M01S00065.comcsnf +++| SNF      SPACE  4,25
00067  M01S00066.comcsnf +++|**        SNF - SORT NUMBERED FILE.
00068  M01S00067.comcsnf +++|*
00069  M01S00068.comcsnf +++|*         ENTRY  (X1) = FILE TYPE (0=DIRECT ACCESS).
00070  M01S00069.comcsnf +++|*                (X2) = ADDRESS OF FET FOR INPUT FILE.
00071  M01S00070.comcsnf +++|*                (X6) = NUMBER OF DIGITS TO SORT ON.
00072  M01S00071.comcsnf +++|*                (X7) = CHARACTER SET.
00073  M01S00072.comcsnf +++|*                     < 0, NOT DETERMINED.
00074  M01S00073.comcsnf +++|*                     = 0, 6/12 DISPLAY CODE.
00075  M01S00074.comcsnf +++|*                     = 1, ASCII8.
00076  M01S00075.comcsnf +++|*
00077  M01S00076.comcsnf +++|*         EXIT   (X1) = 0, SORT COMPLETE, FILE REWRITTEN.
00078  M01S00077.comcsnf +++|*                     = NON-ZERO, ERROR ENCOUNTERED.
00079  M01S00078.comcsnf +++|*                (B2) = ERROR CODE.
00080  M01S00079.comcsnf +++|*                       -1, SORT FILE EMPTY.
00081  M01S00080.comcsnf +++|*                       0, LINE WITHOUT LINE NUMBER ENCOUNTERED.
00082  M01S00081.comcsnf +++|*                       1, DIRECT ACCESS FILE NOT IN WRITE MODE.
00083  M01S00082.comcsnf +++|*                       2, NOT ENOUGH BUFFER SPACE AVAILABLE.
00084  M01S00083.comcsnf +++|*                (X6) = THE NUMBER OF LINES IN THE FILE AFTER THE SORT
00085  M01S00084.comcsnf +++|*                       IS COMPLETE (IF SNF$ IS DEFINED).
00086  M01S00085.comcsnf +++|*
00087  M01S00086.comcsnf +++|*         USES   X - ALL.
00088  M01S00087.comcsnf +++|*                A - ALL.
00089  M01S00088.comcsnf +++|*                B - 2, 7.
00090  M01S00089.comcsnf +++|*
00091  M01S00090.comcsnf +++|*         CALLS  CEB, GLT, MER.
00092  M01S00091.comcsnf +++|*
00093  M01S00092.comcsnf +++|*         MACROS READEI, READW, RECALL, RENAME, RETURN, REWIND, WRITE,
00094  M01S00093.comcsnf +++|*                WRITER, WRITEW.
00095  M01S00094.comcsnf +++|*
00096  M01S00095.comcsnf +++|*         REQUIRES  COMCCIO, COMCLFM, COMCMAC, COMCRDC, COMCRDW,
00097  M01S00096.comcsnf +++|*                   COMCSST, COMCSYS, COMCWTC, COMCWTW.
00098  M01S00097.comcsnf +++|*
00099  M01S00098.comcsnf +++|*         NOTES  THE I/O BUFFER OF THE FILE TO BE SORTED IS SPLIT
00100  M01S00099.comcsnf +++|*                INTO TWO SECTIONS.  THE TOP SECTION IS HALF THE
00101  M01S00100.comcsnf +++|*                BUFFER MINUS ONE WORD AND IS USED TO READ IN
00102  M01S00101.comcsnf +++|*                LINES FROM THE SORT FILE.  A LINE NUMBER TABLE WILL
00103  M01S00102.comcsnf +++|*                WILL BE GENERATED IN THE BOTTOM SECTION AND
00104  M01S00103.comcsnf +++|*                DUE TO OVERHEAD IN *GLT* IT HAS TO BE AT LEAST TWO
00105  M01S00104.comcsnf +++|*                WORDS LONGER THAN THE TOP SECTION.  ALSO THE
00106  M01S00105.comcsnf +++|*                TOP SECTION MUST STILL BE AT LEAST 101B WORDS
00107  M01S00106.comcsnf +++|*                TO ALLOW A PRU TO BE READ IN, SO THE MINIMUM
00108  M01S00107.comcsnf +++|*                BUFFER SIZE IS 204B WORDS, AND OPTIMUM IS (200B)N +4.
00109  M01S00108.comcsnf +++|
00110  M01S00109.comcsnf +++|
00111  M01S00110.comcsnf +++| SNF      SUBR               ENTRY/EXIT
00112  M01S00111.comcsnf +++|
00113  M01S00112.comcsnf +++|*         SAVE ENTRY PARAMETERS.
00114  M01S00113.comcsnf +++|
00115  M01S00114.comcsnf +++|          SA7    CPAR        CHARACTER SET
00116  M01S00115.comcsnf +++|          SA6    NDIG        NUMBER OF DIGITS TO SORT ON
00117  M01S00116.comcsnf +++|          BX7    X1
00118  M01S00117.comcsnf +++|          BX6    X2
00119  M01S00118.comcsnf +++|          SA7    FTYP        FILE TYPE
00120  M01S00119.comcsnf +++|          SA6    INPF        ADDRESS OF FET
00121  M01S00120.comcsnf +++|          SA3    SCR
00122  M01S00121.comcsnf +++|          SA4    SCR1
00123  M01S00122.comcsnf +++|          MX1    42          MASK IN FILE NAMES
00124  M01S00123.comcsnf +++|          BX6    X1*X3
00125  M01S00124.comcsnf +++|          BX7    X1*X4
00126  M01S00125.comcsnf +++|          SX3    B1          SET FILE NOT BUSY
00127  M01S00126.comcsnf +++|          BX7    X7+X3
00128  M01S00127.comcsnf +++|          BX6    X6+X3
00129  M01S00128.comcsnf +++|          SA7    FNT2        STORE FILE NAMES
00130  M01S00129.comcsnf +++|          SA6    A4          CHANGE *SCR1* FILE NAME
00131  M01S00130.comcsnf +++|          BX6    X6-X6       INTIALIZE FLAGS AND COUNTERS
00132  M01S00131.comcsnf +++|          SA6    DRFG
00133  M01S00132.comcsnf +++|          SX7    -1          START LAST LINE NUMBER AT -1
00134  M01S00133.comcsnf +++| SNF$     IF     DEF,SNF$
00135  M01S00134.comcsnf +++|          SA6    NLSF        CLEAR NUMBER OF SORTED LINES
00136  M01S00135.comcsnf +++| SNF$     ENDIF
00137  M01S00136.comcsnf +++|          SA7    LAST
00138  M01S00137.comcsnf +++|          SA6    ERFG        CLEAR ERROR FLAG
00139  M01S00138.comcsnf +++|          REWIND X2,R        REWIND SORT FILE
00140  M01S00139.comcsnf +++|          REWIND SCR1,R      REWIND SCR1
00141  M01S00140.comcsnf +++|          REWIND SCR,R       REWIND SCR
00142  M01S00141.comcsnf +++|          SA2    INPF
00143  M01S00142.comcsnf +++|          SA1    X2+1        FIRST
00144  M01S00143.comcsnf +++|          MX6    -18
00145  M01S00144.comcsnf +++|          BX1    -X6*X1
00146  M01S00145.comcsnf +++|          SA3    X2+4        LIMIT
00147  M01S00146.comcsnf +++|          BX7    -X6*X3
00148  M01S00147.comcsnf +++|          BX6    X6*X3
00149  M01S00148.comcsnf +++|          IX4    X7-X1       SIZE OF BUFFER
00150  M01S00149.comcsnf +++|          SB2    B1+B1
00151  M01S00150.comcsnf +++|          SX0    X4-204B     CHECK FOR BUFFER .LT. 204B WORDS
00152  M01S00151.comcsnf +++|          NG     X0,SNF7     IF BUFFER IS .LT. 204B WORDS
00153  M01S00152.comcsnf +++|          SA7    LIMT
00154  M01S00153.comcsnf +++|          AX4    1
00155  M01S00154.comcsnf +++|          IX4    X1+X4       NEW LIMIT
00156  M01S00155.comcsnf +++|          SX4    X4-1        LEAVE TWO EXTRA WORDS FOR *LNT* OVERHEAD
00157  M01S00156.comcsnf +++|          BX6    X6+X4
00158  M01S00157.comcsnf +++|          SA6    A3
00159  M01S00158.comcsnf +++|          EQ     SNF2        BEGIN READING IN FILE
00160  M01S00159.comcsnf +++|
00161  M01S00160.comcsnf +++|*         ENTER MAIN LOOP.
00162  M01S00161.comcsnf +++|
00163  M01S00162.comcsnf +++| SNF1     SA1    X2+B1
00164  M01S00163.comcsnf +++|          SX6    X1
00165  M01S00164.comcsnf +++|          SA6    A1+B1       RESET IN AND OUT ON INPUT FILE
00166  M01S00165.comcsnf +++|          SA6    A6+B1
00167  M01S00166.comcsnf +++|          SA4    PLWC        CHECK FOR PARTIAL LINE
00168  M01S00167.comcsnf +++|          ZR     X4,SNF2     IF NO PARTIAL LINE
00169  M01S00168.comcsnf +++|          SA3    PLAD
00170  M01S00169.comcsnf +++|          WRITEW X2,X3,X4    MOVE PARTIAL LINE TO TOP OF BUFFER
00171  M01S00170.comcsnf +++| SNF2     READEI X2          READ NEXT SEGMENT FROM INPUT FILE
00172  M01S00171.comcsnf +++|          RECALL SCR
00173  M01S00172.comcsnf +++|          SA1    X2
00174  M01S00173.comcsnf +++|          SA2    SCR1
00175  M01S00174.comcsnf +++|          BX1    X1-X2
00176  M01S00175.comcsnf +++|          AX1    18
00177  M01S00176.comcsnf +++|          ZR     X1,SNF3     IF *SCR* ALREADY HAS ITS OWN FNT NAME
00178  M01S00177.comcsnf +++|          RENAME SCR,SCR1,R
00179  M01S00178.comcsnf +++| SNF3     SA2    INPF        CHECK FOR DATA READ
00180  M01S00179.comcsnf +++|          SA1    X2+2        IN
00181  M01S00180.comcsnf +++|          SA3    A1+B1       OUT
00182  M01S00181.comcsnf +++|          IX0    X1-X3
00183  M01S00182.comcsnf +++|          ZR     X0,SNF4     IF NO DATA READ
00184  M01S00183.comcsnf +++|          RJ     CEB         CHECK END OF BUFFER FOR END OF LINE
00185  M01S00184.comcsnf +++|          NZ     X1,SNF7     IF ERROR
00186  M01S00185.comcsnf +++|          RJ     GLT         GENERATE LINE NUMBER TABLE
00187  M01S00186.comcsnf +++|          NZ     X1,SNF7     IF ERROR
00188  M01S00187.comcsnf +++|          RJ     MER         MERGE SCR1 AND I TO SCR
00189  M01S00188.comcsnf +++|          WRITE  SCR
00190  M01S00189.comcsnf +++| SNF4     SA2    INPF
00191  M01S00190.comcsnf +++|          SA1    X2
00192  M01S00191.comcsnf +++|          LX1    59-9
00193  M01S00192.comcsnf +++|          PL     X1,SNF1     IF NOT *EOI* ON INPUT FILE
00194  M01S00193.comcsnf +++|
00195  M01S00194.comcsnf +++|*         PROCESS SORTED FILE.
00196  M01S00195.comcsnf +++|
00197  M01S00196.comcsnf +++|          SA1    DRFG        CHECK IF DATA WAS EVER READ
00198  M01S00197.comcsnf +++|          SB2    -B1
00199  M01S00198.comcsnf +++|          ZR     X1,SNF7     IF EMPTY FILE
00200  M01S00199.comcsnf +++|          SA1    LIMT        RESTORE LIMIT IN FET
00201  M01S00200.comcsnf +++|          SA2    INPF
00202  M01S00201.comcsnf +++|          SA2    X2+4
00203  M01S00202.comcsnf +++|          MX6    -18
00204  M01S00203.comcsnf +++|          BX6    X6*X2
00205  M01S00204.comcsnf +++|          BX6    X6+X1
00206  M01S00205.comcsnf +++|          SA6    A2
00207  M01S00206.comcsnf +++|          WRITER SCR,R
00208  M01S00207.comcsnf +++|          SA1    FTYP
00209  M01S00208.comcsnf +++|          ZR     X1,SNF5     IF INPUT WAS DIRECT ACCESS FILE
00210  M01S00209.comcsnf +++|          SA1    INPF
00211  M01S00210.comcsnf +++|          SA1    X1
00212  M01S00211.comcsnf +++|          RENAME X2,X1
00213  M01S00212.comcsnf +++|          EQ     SNF8        RETURN/REWIND FILES
00214  M01S00213.comcsnf +++|
00215  M01S00214.comcsnf +++| SNF5     REWIND X2,R        COPY SCR TO INPUT
00216  M01S00215.comcsnf +++|          READEI X2
00217  M01S00216.comcsnf +++|          SA5    SCR1+1
00218  M01S00217.comcsnf +++|          SA0    X5
00219  M01S00218.comcsnf +++|          SA2    INPF
00220  M01S00219.comcsnf +++|          REWIND X2,R
00221  M01S00220.comcsnf +++| SNF6     SA5    SCR1+4
00222  M01S00221.comcsnf +++|          SX6    A0+B1
00223  M01S00222.comcsnf +++|          IX5    X5-X6
00224  M01S00223.comcsnf +++|          READW  SCR,A0,X5
00225  M01S00224.comcsnf +++|          SB7    A0
00226  M01S00225.comcsnf +++|          SB7    B6-B7
00227  M01S00226.comcsnf +++|          SA2    INPF
00228  M01S00227.comcsnf +++|          BX5    X1
00229  M01S00228.comcsnf +++|          WRITEW X2,A0,B7
00230  M01S00229.comcsnf +++|          PL     X5,SNF6     IF COPY NOT COMPLETE
00231  M01S00230.comcsnf +++|          WRITER X2          EMPTY BUFFER
00232  M01S00231.comcsnf +++|          EQ     SNF8        RETURN/REWIND FILES
00233  M01S00232.comcsnf +++|
00234  M01S00233.comcsnf +++| SNF7     SX6    1           SET ERROR FLAG
00235  M01S00234.comcsnf +++|          SA6    ERFG
00236  M01S00235.comcsnf +++| SNF8     SA2    SCR1        RESTORE FET NAMES
00237  M01S00236.comcsnf +++|          BX6    X2
00238  M01S00237.comcsnf +++|          SA6    SCR
00239  M01S00238.comcsnf +++|          SA2    FNT2
00240  M01S00239.comcsnf +++|          BX6    X2
00241  M01S00240.comcsnf +++|          SA6    SCR1
00242  M01S00241.comcsnf +++|          RETURN SCR,R       RETURN SCRATCH FILES
00243  M01S00242.comcsnf +++|          RETURN SCR1,R
00244  M01S00243.comcsnf +++|          SA2    INPF        REWIND SORT FILE
00245  M01S00244.comcsnf +++|          REWIND X2,R
00246  M01S00245.comcsnf +++|          SA1    ERFG        RESTORE SAVED VALUE OF ERROR FLAG
00247  M01S00246.comcsnf +++| SNF$     IF     DEF,SNF$
00248  M01S00247.comcsnf +++|          SA3    NLSF        NUMBER OF LINES IN SORTED FILE
00249  M01S00248.comcsnf +++|          BX6    X3
00250  M01S00249.comcsnf +++| SNF$     ENDIF
00251  M01S00250.comcsnf +++|          EQ     SNFX        RETURN
00252  M01S00251.comcsnf +++| GLT      SPACE  4,20
00253  M01S00252.comcsnf +++|**        GLT - GENERATE LINE NUMBER TABLE.
00254  M01S00253.comcsnf +++|*
00255  M01S00254.comcsnf +++|*         EXIT   (X0) = FWA OF SORTED LINE NUMBER TABLE.
00256  M01S00255.comcsnf +++|*                (X1) = 0, IF NORMAL RETURN.
00257  M01S00256.comcsnf +++|*                     = 1, IF ERROR RETURN.
00258  M01S00257.comcsnf +++|*                (B2) = ERROR CODE, IF (X1) = 1.
00259  M01S00258.comcsnf +++|*                (DRFG) = 1.
00260  M01S00259.comcsnf +++|*
00261  M01S00260.comcsnf +++|*         USES   X - 0, 1, 2, 3, 5, 6, 7.
00262  M01S00261.comcsnf +++|*                A - 1, 2, 3, 5, 7.
00263  M01S00262.comcsnf +++|*                B - 2, 3, 6, 7.
00264  M01S00263.comcsnf +++|*
00265  M01S00264.comcsnf +++|*         CALLS  DCP, GLN, SST=.
00266  M01S00265.comcsnf +++|
00267  M01S00266.comcsnf +++|
00268  M01S00267.comcsnf +++| GLT      SUBR               ENTRY/EXIT
00269  M01S00268.comcsnf +++|          SA1    INPF
00270  M01S00269.comcsnf +++|          SA1    X1+B1       *FIRST*
00271  M01S00270.comcsnf +++|          SA2    A1+B1       *IN*
00272  M01S00271.comcsnf +++|          SA3    A2+B1       *OUT*
00273  M01S00272.comcsnf +++|          SA5    A3+B1       *LIMIT*
00274  M01S00273.comcsnf +++|          SX0    X5          *LNT* WILL START AT *LIMIT*
00275  M01S00274.comcsnf +++|          MX5    -18
00276  M01S00275.comcsnf +++|          SX7    B1
00277  M01S00276.comcsnf +++|          IX2    X2-X1       *IN* - *FIRST*
00278  M01S00277.comcsnf +++|          SA7    DRFG        SET DATA READ FLAG
00279  M01S00278.comcsnf +++|          BX5    -X5*X2      NUMBER OF WORDS TO READ
00280  M01S00279.comcsnf +++|          SA2    X3          READ FIRST WORD
00281  M01S00280.comcsnf +++|          RJ     DCP         DEFINE CHARACTER SET PARAMETERS
00282  M01S00281.comcsnf +++|          ZR     X2,GLT9     IF NO LINE NUMBER FOUND
00283  M01S00282.comcsnf +++|          BX7    X7-X7       ZERO WORD TABLE DELIMITER
00284  M01S00283.comcsnf +++|          SA7    X0
00285  M01S00284.comcsnf +++| GLT1     BX1    X2
00286  M01S00285.comcsnf +++|          NX6,B3 X7          (X6) = 0, (B3) = 48
00287  M01S00286.comcsnf +++|          RJ     GLN         GET LINE NUMBER
00288  M01S00287.comcsnf +++|          SB2    47
00289  M01S00288.comcsnf +++|          SX7    A2          ADDRESS OF LINE
00290  M01S00289.comcsnf +++|          LX6    18          POSITION LINE NUMBER
00291  M01S00290.comcsnf +++|          EQ     B2,B3,GLT9  IF NO LINE NUMBER
00292  M01S00291.comcsnf +++|          ZR     X1,GLT4     IF POSSIBLE NULL LINE
00293  M01S00292.comcsnf +++| GLT2     BX6    X6+X7
00294  M01S00293.comcsnf +++|          LX7    X6,B1       LEAVE BIT 0 FOR LINE DELETE FLAG
00295  M01S00294.comcsnf +++|          SA7    A7+B1       STORE TABLE ENTRY
00296  M01S00295.comcsnf +++|          MX1    -12
00297  M01S00296.comcsnf +++| GLT3     BX7    -X1*X2
00298  M01S00297.comcsnf +++|          SA2    A2+B1       READ NEXT WORD
00299  M01S00298.comcsnf +++|          SX5    X5-1        DECREMENT NUMBER OF WORDS TO READ
00300  M01S00299.comcsnf +++|          NZ     X7,GLT3     IF NOT END OF LINE
00301  M01S00300.comcsnf +++|          PL     X5,GLT1     IF MORE WORDS TO READ
00302  M01S00301.comcsnf +++|          SA7    A7+1        SET TERMINATOR ZERO WORD
00303  M01S00302.comcsnf +++|          SX0    X0+1        STARTING ADDRESS OF *LNT* FOR SORT
00304  M01S00303.comcsnf +++|          SB7    X0
00305  M01S00304.comcsnf +++|          SX1    A7-B7       NUMBER OF ENTRIES IN *LNT*
00306  M01S00305.comcsnf +++|          RJ     SST=        SORT TABLE
00307  M01S00306.comcsnf +++|          SX1    B0          SET NO ERROR ENCOUNTERED
00308  M01S00307.comcsnf +++|          SB2    B0          SET *LNT* GENERATED
00309  M01S00308.comcsnf +++|          EQ     GLTX        RETURN
00310  M01S00309.comcsnf +++|
00311  M01S00310.comcsnf +++|*         CHECK POSSIBLE LINE DELETE.
00312  M01S00311.comcsnf +++|
00313  M01S00312.comcsnf +++| GLT4     SA1    CPAR
00314  M01S00313.comcsnf +++|          SA1    X1+TPAR     GET CHARACTER SET PARAMETERS
00315  M01S00314.comcsnf +++|          SB6    -B6         ZERO CHARACTER
00316  M01S00315.comcsnf +++|          SB2    X1          BLANK CHARACTER
00317  M01S00316.comcsnf +++|          SB2    -B2
00318  M01S00317.comcsnf +++|          SX3    X3+B6       ADD ON CODED ZERO
00319  M01S00318.comcsnf +++|          SX1    X3+B2       SUBTRACT BLANK
00320  M01S00319.comcsnf +++|          SB6    -B6         RESTORE -0
00321  M01S00320.comcsnf +++|          ZR     X3,GLT5     IF PROBABLE LINE DELETE
00322  M01S00321.comcsnf +++|          NZ     X1,GLT2     IF NOT DELETE
00323  M01S00322.comcsnf +++| GLT5     SA1    CPAR
00324  M01S00323.comcsnf +++|          SA3    A2+1
00325  M01S00324.comcsnf +++|          SB3    B3-43
00326  M01S00325.comcsnf +++|          NZ     X1,GLT7     IF ASCII8 CODE SET
00327  M01S00326.comcsnf +++| GLT6     SB3    B3+5        SET TO CHECK NINE AND TEN DIGITS
00328  M01S00327.comcsnf +++|          SX1    X1-2
00329  M01S00328.comcsnf +++| GLT7     GE     B3,B1,GLT8  IF < 9 OR < 4
00330  M01S00329.comcsnf +++|          ZR     X3,GLT8     IF EOL FOUND
00331  M01S00330.comcsnf +++|          ZR     B3,GLT2     IF EXACTLY 9 OR 4
00332  M01S00331.comcsnf +++|          LX3    X3,B7
00333  M01S00332.comcsnf +++|          SX3    X3+B2       COMPARE TO BLANK
00334  M01S00333.comcsnf +++|          ZR     X3,GLT8     IF LINE DELETE
00335  M01S00334.comcsnf +++|          SA3    A3+1
00336  M01S00335.comcsnf +++|          PL     X1,GLT6     IF ASCII8
00337  M01S00336.comcsnf +++|          EQ     GLT2        NOT LINE DELETE
00338  M01S00337.comcsnf +++|
00339  M01S00338.comcsnf +++| GLT8     MX1    1           SET DELETE FLAG
00340  M01S00339.comcsnf +++|          BX6    X6+X1
00341  M01S00340.comcsnf +++|          EQ     GLT2        LOOP TO BUILD ENTRY
00342  M01S00341.comcsnf +++|
00343  M01S00342.comcsnf +++|*         ERROR EXITS.
00344  M01S00343.comcsnf +++|
00345  M01S00344.comcsnf +++| GLT9     SX1    B1          SET UP ERROR RETURN
00346  M01S00345.comcsnf +++|          SB2    B0          NO LINE NUMBER ERROR CODE
00347  M01S00346.comcsnf +++|          EQ     GLT         RETURN
00348  M01S00347.comcsnf +++|          EQ     GLTX        RETURN
00349  M01S00348.comcsnf +++|          SPACE  4,10
00350  M01S00349.comcsnf +++|**        CEB - CHECK END OF BUFFER FOR END OF LINE.
00351  M01S00350.comcsnf +++|*
00352  M01S00351.comcsnf +++|*         *CEB* STORES THE ADDRESS OF A PARTIAL LINE ( IF ONE WAS
00353  M01S00352.comcsnf +++|*         LEFT IN THE I/O BUFFER WHEN THE LAST SEGMENT WAS READ)
00354  M01S00353.comcsnf +++|*         IN *PLAD* AND RESETS *IN* TO KEEP THE PARTIAL LINE
00355  M01S00354.comcsnf +++|*         FROM BEING SEEN BY *GLT* AND *MER*. *SNF* WILL MOVE THE
00356  M01S00355.comcsnf +++|*         PARTIAL LINE TO THE TOP OF THE BUFFER BEFORE THE NEXT
00357  M01S00356.comcsnf +++|*         READ AND RESET THE FET POINTERS.  IN ADDITION *CEB* MAKES
00358  M01S00357.comcsnf +++|*         SURE THAT THERE WILL BE AT LEAST 101B WORDS OF ROOM LEFT IN
00359  M01S00358.comcsnf +++|*         THE BUFFER ONCE THE PARTIAL LINE IS MOVED TO THE TOP OF
00360  M01S00359.comcsnf +++|*         THE BUFFER TO ALLOW AT LEAST ONE PRU TO BE READ IN.
00361  M01S00360.comcsnf +++|*
00362  M01S00361.comcsnf +++|*         EXIT   (PLAD) = ADDRESS OF PARTIAL LINE.
00363  M01S00362.comcsnf +++|*                (PLWC) = NUMBER OF WORDS IN PARTIAL LINE.
00364  M01S00363.comcsnf +++|*                (X1) = 0 IF NO ERROR.
00365  M01S00364.comcsnf +++|*                (X1) = 1 IF NOT ENOUGH BUFFER SPACE AVAILABLE.
00366  M01S00365.comcsnf +++|*                (B2) = 2 IF NOT ENOUGH BUFFER SPACE AVAILABLE.
00367  M01S00366.comcsnf +++|*
00368  M01S00367.comcsnf +++|*         USES   X - ALL.
00369  M01S00368.comcsnf +++|*                A - 2, 3, 4, 5, 7.
00370  M01S00369.comcsnf +++|*                B - 2, 3 ,4, 5
00371  M01S00370.comcsnf +++|*
00372  M01S00371.comcsnf +++|*         MACROS RECALL.
00373  M01S00372.comcsnf +++|
00374  M01S00373.comcsnf +++| CEB2     SX7    B3+B1
00375  M01S00374.comcsnf +++|          SA7    A4          RESET *IN* TO EXCLUDE PARTIAL LINE
00376  M01S00375.comcsnf +++|          SA7    PLAD        STORE ADDRESS OF PARTIAL LINE
00377  M01S00376.comcsnf +++| CEB3     SX7    B5
00378  M01S00377.comcsnf +++|          SA7    PLWC        STORE NUMBER OF WORDS
00379  M01S00378.comcsnf +++|          BX1    X1-X1       CLEAR ERROR FLAG
00380  M01S00379.comcsnf +++|
00381  M01S00380.comcsnf +++| CEB      SUBR               ENTRY/EXIT
00382  M01S00381.comcsnf +++|          SA2    INPF
00383  M01S00382.comcsnf +++|          RECALL X2
00384  M01S00383.comcsnf +++|          SB5    B0          START NUMBER OF WORDS AT ZERO
00385  M01S00384.comcsnf +++|          SA2    X2
00386  M01S00385.comcsnf +++|          LX2    59-9
00387  M01S00386.comcsnf +++|          SA3    A2+B1       *FIRST*
00388  M01S00387.comcsnf +++|          NG     X2,CEB3     IF EOI ENCOUNTERED
00389  M01S00388.comcsnf +++|          SA4    A3+1        *IN*
00390  M01S00389.comcsnf +++|          SA5    A2+4        *LIMIT*
00391  M01S00390.comcsnf +++|          IX0    X5-X3       *LIMIT*-*FIRST*
00392  M01S00391.comcsnf +++|          MX2    -12
00393  M01S00392.comcsnf +++|          SB4    X0-101B     NUMBER OF WORDS THAT CAN BE READ
00394  M01S00393.comcsnf +++|          SB3    X4-1
00395  M01S00394.comcsnf +++| CEB1     SA3    B3          GET WORD FROM END OF DATA
00396  M01S00395.comcsnf +++|          BX6    -X2*X3
00397  M01S00396.comcsnf +++|          ZR     X6,CEB2     IF *EOL* FOUND
00398  M01S00397.comcsnf +++|          SB3    B3-B1
00399  M01S00398.comcsnf +++|          SB5    B5+B1       INCREMENT NUMBER OF WORDS READ
00400  M01S00399.comcsnf +++|          LE     B5,B4,CEB1  IF MORE WORDS CAN BE READ
00401  M01S00400.comcsnf +++|          SB2    B1+B1       SET ERROR CODE FOR NOT ENOUGH BUFFER SPACE
00402  M01S00401.comcsnf +++|          SX1    B1          SET ERROR FLAG
00403  M01S00402.comcsnf +++|          EQ     CEBX        RETURN
00404  M01S00403.comcsnf +++| DCP      SPACE  4,20
00405  M01S00404.comcsnf +++|**        DCP - DEFINE CHARACTER PARAMETERS.
00406  M01S00405.comcsnf +++|*         DETERMINE CHARACTER SET OF INPUT FILE AND SET
00407  M01S00406.comcsnf +++|*         UP PARAMETERS ACCORDINGLY.
00408  M01S00407.comcsnf +++|*
00409  M01S00408.comcsnf +++|*         ENTRY  (X2) = FIRST WORD OF INPUT BUFFER.
00410  M01S00409.comcsnf +++|*                (CPAR) = -1, CHARACTER SET TO BE DETERMINED.
00411  M01S00410.comcsnf +++|*                       = 0, CHARACTER SET = 6/12 DISPLAY CODE.
00412  M01S00411.comcsnf +++|*                       = 1, CHARACTER SET = ASCII8.
00413  M01S00412.comcsnf +++|*
00414  M01S00413.comcsnf +++|*         EXIT   (X2) = NON ZERO IF NORMAL RETURN.
00415  M01S00414.comcsnf +++|*                       0, IF ERROR RETURN.
00416  M01S00415.comcsnf +++|*                (X4) = CHARACTER MASK.
00417  M01S00416.comcsnf +++|*                (B4) = 48 - NDIG - 1.
00418  M01S00417.comcsnf +++|*                (B5) = -(FIRST NON-NUMERIC CHARACTER).
00419  M01S00418.comcsnf +++|*                (B6) = -(FIRST NUMERIC CHARACTER).
00420  M01S00419.comcsnf +++|*                (B7) = SHIFT COUNT.
00421  M01S00420.comcsnf +++|*
00422  M01S00421.comcsnf +++|*         USES   X - 1, 2, 4, 7.
00423  M01S00422.comcsnf +++|*                A - 1, 7.
00424  M01S00423.comcsnf +++|*                B - 3, 4, 5, 6, 7.
00425  M01S00424.comcsnf +++|
00426  M01S00425.comcsnf +++|
00427  M01S00426.comcsnf +++| DCP4     SA1    X1+TPAR     GET PARAMETER WORD
00428  M01S00427.comcsnf +++|          AX1    18          GET ZERO CHARACTER
00429  M01S00428.comcsnf +++|          SB6    X1
00430  M01S00429.comcsnf +++|          SB6    -B6
00431  M01S00430.comcsnf +++|          AX1    18
00432  M01S00431.comcsnf +++|          SB5    B6-10       GET FIRST NON-NUMERIC
00433  M01S00432.comcsnf +++|          SX4    X1          GET CHARACTER MASK
00434  M01S00433.comcsnf +++|          AX1    18
00435  M01S00434.comcsnf +++|          SB7    X1          GET SHIFT COUNT
00436  M01S00435.comcsnf +++|          SA1    NDIG        SET UP CHARACTER COUNT CONSTANT
00437  M01S00436.comcsnf +++|          SB4    X1+B1
00438  M01S00437.comcsnf +++|          SB3    48
00439  M01S00438.comcsnf +++|          SX1    B0
00440  M01S00439.comcsnf +++|          SB4    B3-B4
00441  M01S00440.comcsnf +++|
00442  M01S00441.comcsnf +++| DCP      SUBR               ENTRY/EXIT
00443  M01S00442.comcsnf +++|          SA1    CPAR        CHECK CHARACTER SET
00444  M01S00443.comcsnf +++|          PL     X1,DCP4     IF ALREADY DETERMINED
00445  M01S00444.comcsnf +++|
00446  M01S00445.comcsnf +++|*         CHECK IF 6/12 DISPLAY CODE.
00447  M01S00446.comcsnf +++|
00448  M01S00447.comcsnf +++|          LX2    6
00449  M01S00448.comcsnf +++|          MX4    -6
00450  M01S00449.comcsnf +++|          BX4    -X4*X2      FIRST CHARACTER
00451  M01S00450.comcsnf +++|          LX2    6
00452  M01S00451.comcsnf +++|          SX4    X4-33B
00453  M01S00452.comcsnf +++|          NG     X4,DCP1     IF ALPHABETIC
00454  M01S00453.comcsnf +++|          SX4    X4-10
00455  M01S00454.comcsnf +++|          PL     X4,DCP1     IF NON-NUMERIC
00456  M01S00455.comcsnf +++|          LX2    -12
00457  M01S00456.comcsnf +++|          SX1    B0          SET 6/12 DISPLAY CODE FLAG VALUE
00458  M01S00457.comcsnf +++|          EQ     DCP2        COMPLETE PARAMETER SETUP
00459  M01S00458.comcsnf +++|
00460  M01S00459.comcsnf +++|*         CHECK IF ASCII8.
00461  M01S00460.comcsnf +++|
00462  M01S00461.comcsnf +++| DCP1     MX4    -12
00463  M01S00462.comcsnf +++|          BX4    -X4*X2      FIRST CHARACTER
00464  M01S00463.comcsnf +++|          SX1    B1          SET ASCII8 FLAG VALUE
00465  M01S00464.comcsnf +++|          LX2    -12
00466  M01S00465.comcsnf +++|          SX4    X4-60B
00467  M01S00466.comcsnf +++|          NG     X4,DCP3     IF NOT NUMERIC
00468  M01S00467.comcsnf +++|          SX4    X4-10
00469  M01S00468.comcsnf +++|          PL     X4,DCP3     IF NOT NUMERIC
00470  M01S00469.comcsnf +++| DCP2     BX7    X1
00471  M01S00470.comcsnf +++|          SA7    A1          CHARACTER SET FLAG
00472  M01S00471.comcsnf +++|          EQ     DCP4        SET UP PARAMETERS
00473  M01S00472.comcsnf +++|
00474  M01S00473.comcsnf +++| DCP3     SX2    B0+         SET ERROR EXIT
00475  M01S00474.comcsnf +++|          EQ     DCPX        RETURN
00476  M01S00475.comcsnf +++| GLN      SPACE  4,20
00477  M01S00476.comcsnf +++|**        GLN - GET LINE NUMBER.
00478  M01S00477.comcsnf +++|*
00479  M01S00478.comcsnf +++|*         ENTRY  (X1) = (X2) = FIRST WORD OF LINE.
00480  M01S00479.comcsnf +++|*                (X4) = CHARACTER MASK.
00481  M01S00480.comcsnf +++|*                (X6) = ZERO.
00482  M01S00481.comcsnf +++|*                (A2) = ADDRESS FIRST WORD OF LINE.
00483  M01S00482.comcsnf +++|*                (B3) = 48.
00484  M01S00483.comcsnf +++|*                (B4) = 48 - NDIG - 1.
00485  M01S00484.comcsnf +++|*                (B5) = -(FIRST NON-NUMERIC).
00486  M01S00485.comcsnf +++|*                (B6) = -(ZERO CHARACTER).
00487  M01S00486.comcsnf +++|*                (B7) = SHIFT COUNT.
00488  M01S00487.comcsnf +++|*
00489  M01S00488.comcsnf +++|*         EXIT   (X1) = DATA FOLLOWING LINE NUMBER.
00490  M01S00489.comcsnf +++|*                (X6) = PSEUDO-HEX LINE NUMBER.
00491  M01S00490.comcsnf +++|*
00492  M01S00491.comcsnf +++|*         USES   X - 1, 3, 6, 7.
00493  M01S00492.comcsnf +++|*                A - 1, 3.
00494  M01S00493.comcsnf +++|*                B - 2, 3.
00495  M01S00494.comcsnf +++|
00496  M01S00495.comcsnf +++|
00497  M01S00496.comcsnf +++| GLN      SUBR               ENTRY/EXIT
00498  M01S00497.comcsnf +++| GLN1     LX1    B7
00499  M01S00498.comcsnf +++|          BX3    X4*X1       GET NEXT CHARACTER
00500  M01S00499.comcsnf +++|          SX7    X3+B5       SUBTRACT FIRST NON-DIGIT
00501  M01S00500.comcsnf +++|          BX1    -X4*X1      CLEAR CHARACTER BEING PROCESSED
00502  M01S00501.comcsnf +++|          SX3    X3+B6       SUBTRACT ZERO CHARACTER
00503  M01S00502.comcsnf +++|          BX7    -X7+X3
00504  M01S00503.comcsnf +++|          SB3    B3-1
00505  M01S00504.comcsnf +++|          NG     X7,GLNX     IF NOT NUMERIC
00506  M01S00505.comcsnf +++|          EQ     B3,B4,GLNX  IF MAXIMUM NUMBER OF DIGITS PROCESSED
00507  M01S00506.comcsnf +++|          LX6    4
00508  M01S00507.comcsnf +++|          IX6    X6+X3       ACCUMULATE DIGIT
00509  M01S00508.comcsnf +++|          NZ     X1,GLN1     IF WORD NOT USED NOT UP
00510  M01S00509.comcsnf +++|          SA3    CPAR
00511  M01S00510.comcsnf +++|          ZR     X3,GLN1     IF NOT ASCII8
00512  M01S00511.comcsnf +++|          SB2    B3-43
00513  M01S00512.comcsnf +++|          NZ     B2,GLN1     IF NOT EXACTLY FIVE DIGITS PROCESSED
00514  M01S00513.comcsnf +++|          SA1    A2+1
00515  M01S00514.comcsnf +++|          EQ     GLN1        CONTINUE PROCESSING
00516  M01S00515.comcsnf +++| MER      SPACE  4,15
00517  M01S00516.comcsnf +++|**        MER - MERGE LAST SORTED SEGMENT WITH NEW INPUT USING DATA
00518  M01S00517.comcsnf +++|*                FROM LINE NUMBER TABLE TO WRITE TO SCR.
00519  M01S00518.comcsnf +++|*
00520  M01S00519.comcsnf +++|*         ENTRY  (X0) = FWA LINE NUMBER TABLE.
00521  M01S00520.comcsnf +++|*                (LAST) = LAST LINE NUMBER FROM PREVIOUS SEGMENT.
00522  M01S00521.comcsnf +++|*
00523  M01S00522.comcsnf +++|*         EXIT   SEGMENTS MERGED ONTO SCR.
00524  M01S00523.comcsnf +++|*
00525  M01S00524.comcsnf +++|*         USES   X - ALL.
00526  M01S00525.comcsnf +++|*                A - ALL.
00527  M01S00526.comcsnf +++|*                B - 2, 3, 7.
00528  M01S00527.comcsnf +++|*
00529  M01S00528.comcsnf +++|*         CALLS  DCP, GLN.
00530  M01S00529.comcsnf +++|*
00531  M01S00530.comcsnf +++|*         MACROS READ, READC, REWIND, WRITEC, WRITER, WRITEW.
00532  M01S00531.comcsnf +++|
00533  M01S00532.comcsnf +++|
00534  M01S00533.comcsnf +++| MER      SUBR               ENTRY/EXIT
00535  M01S00534.comcsnf +++|          SA5    X0          FIRST ENTRY IN LINE NUMBER TABLE
00536  M01S00535.comcsnf +++|          LX5    59-0
00537  M01S00536.comcsnf +++|          SA1    LAST        GET LAST LINE NUMBER OF PREVIOUS SEGMENT
00538  M01S00537.comcsnf +++|          SA0    X5          (A0) = BUFFER ADDRESS OF LINE M
00539  M01S00538.comcsnf +++|          MX7    1
00540  M01S00539.comcsnf +++|          PL     X5,MER1     IF NOT NULL LINE
00541  M01S00540.comcsnf +++|          SA0    -1          LINE DELETE FLAG
00542  M01S00541.comcsnf +++|          BX5    X7-X5       CLEAR LINE DELETE FLAG
00543  M01S00542.comcsnf +++| MER1     AX5    18          (X5) = M, LINE NUMBER ON MERGE SEGMENT
00544  M01S00543.comcsnf +++|          IX0    X1-X5
00545  M01S00544.comcsnf +++|          NG     X0,MER18    IF NO OVERLAP OF FILES
00546  M01S00545.comcsnf +++|          WRITER SCR         EMPTY SCR BUFFER
00547  M01S00546.comcsnf +++|          REWIND X2,R
00548  M01S00547.comcsnf +++|          SA3    FNT2
00549  M01S00548.comcsnf +++|          BX6    X3
00550  M01S00549.comcsnf +++|          SA6    X2          SCR FNT NAME SCR1
00551  M01S00550.comcsnf +++|          SA3    SCR1+B1     SET IN=OUT=FIRST FOR SCR1
00552  M01S00551.comcsnf +++|          SX6    X3
00553  M01S00552.comcsnf +++|          SA6    A3+B1
00554  M01S00553.comcsnf +++|          SA6    A6+B1
00555  M01S00554.comcsnf +++|          READ   A3-B1       READ SCR1, OLD FILE SEGMENT
00556  M01S00555.comcsnf +++|
00557  M01S00556.comcsnf +++|*         GET LINE NUMBER S FROM SCR1 AND WRITE LINE TO WKST.
00558  M01S00557.comcsnf +++|
00559  M01S00558.comcsnf +++| MER2     SX7    B0+         CLEAR LONG LINE FLAG
00560  M01S00559.comcsnf +++|          SA7    LLFG
00561  M01S00560.comcsnf +++|          READC  SCR1,WKST,WKSTL
00562  M01S00561.comcsnf +++|          NZ     X1,MER17    IF EOR ON SCR1
00563  M01S00562.comcsnf +++|          MX7    -12
00564  M01S00563.comcsnf +++|          BX7    -X7*X4
00565  M01S00564.comcsnf +++|          ZR     X7,MER3     IF LINE FIT INTO *WKST*
00566  M01S00565.comcsnf +++|          SA7    LLFG        SET LONG LINE FLAG TO TRUE
00567  M01S00566.comcsnf +++|          BX7    X4          REPLACE FORCED *EOL* WORD
00568  M01S00567.comcsnf +++|          SA7    WKST+WKSTL-1
00569  M01S00568.comcsnf +++| MER3     RJ     DCP         DEFINE CHARACTER PARAMETERS
00570  M01S00569.comcsnf +++|          SA2    WKST        GET LINE NUMBER S
00571  M01S00570.comcsnf +++|          NX6,B3 X1          (X6) = 0, (B3) = 48
00572  M01S00571.comcsnf +++|          BX1    X2
00573  M01S00572.comcsnf +++|          RJ     GLN
00574  M01S00573.comcsnf +++| MER4     IX0    X5-X6       M - S
00575  M01S00574.comcsnf +++|          NG     X0,MER9     IF M .LT. S
00576  M01S00575.comcsnf +++|          NZ     X0,MER6     IF M .NE. S
00577  M01S00576.comcsnf +++| SNF$     IF     DEF,SNF$
00578  M01S00577.comcsnf +++|          SA1    NLSF        DECREMENT NUMBER OF SORTED LINES
00579  M01S00578.comcsnf +++|          SX7    X1-1
00580  M01S00579.comcsnf +++|          SA7    A1+
00581  M01S00580.comcsnf +++| SNF$     ENDIF
00582  M01S00581.comcsnf +++|          SA1    LLFG
00583  M01S00582.comcsnf +++|          ZR     X1,MER2     IF (M=S) .AND. *LLFG* IS FALSE
00584  M01S00583.comcsnf +++| MER5     READC  SCR1,WKST,WKSTL  CLEAR OUT REST OF LINE
00585  M01S00584.comcsnf +++|          MX7    -12
00586  M01S00585.comcsnf +++|          BX6    -X7*X4
00587  M01S00586.comcsnf +++|          NZ     X6,MER5     IF *EOL* NOT YET REACHED
00588  M01S00587.comcsnf +++|          EQ     MER2        PROCESS NEXT LINE
00589  M01S00588.comcsnf +++|
00590  M01S00589.comcsnf +++| MER6     SA3    LAST        LAST LINE NUMBER
00591  M01S00590.comcsnf +++|          IX0    X3-X5
00592  M01S00591.comcsnf +++|          NG     X0,MER12    IF M .GT. *LAST* S
00593  M01S00592.comcsnf +++|          SA1    LLFG
00594  M01S00593.comcsnf +++|          ZR     X1,MER8     IF LINE WAS NOT TOO LONG
00595  M01S00594.comcsnf +++| MER7     WRITEW SCR,WKST,WKSTL  TRANSFER LINE SO FAR
00596  M01S00595.comcsnf +++|          READC  SCR1,WKST,WKSTL
00597  M01S00596.comcsnf +++|          MX7    -12
00598  M01S00597.comcsnf +++|          BX6    -X7*X4
00599  M01S00598.comcsnf +++|          BX7    X4          REPLACE POSSIBLE FORCED *EOL* WORD
00600  M01S00599.comcsnf +++|          SA7    WKST+WKSTL-1
00601  M01S00600.comcsnf +++|          NZ     X6,MER7     IF NOT END OF LINE
00602  M01S00601.comcsnf +++| MER8     WRITEC SCR,WKST    TRANSFER LINE
00603  M01S00602.comcsnf +++|          EQ     MER2        PROCESS NEXT LINE
00604  M01S00603.comcsnf +++|
00605  M01S00604.comcsnf +++|*         MERGE LINE M.
00606  M01S00605.comcsnf +++|
00607  M01S00606.comcsnf +++| MER9     SB2    A0          BUFFER ADDRESS FOR MERGE FILE
00608  M01S00607.comcsnf +++|          BX0    X5
00609  M01S00608.comcsnf +++|          SA5    A5+B1       GET NEXT M
00610  M01S00609.comcsnf +++|          LX5    59-0        CHECK LINE DELETE FLAG (BIT 0)
00611  M01S00610.comcsnf +++|          ZR     X5,MER11    IF END OF LINE NUMBER TABLE
00612  M01S00611.comcsnf +++|          SA0    X5          BUFFER ADDRESS OF LINE M
00613  M01S00612.comcsnf +++|          MX7    1
00614  M01S00613.comcsnf +++|          PL     X5,MER10    IF NOT LINE DELETE
00615  M01S00614.comcsnf +++|          SA0    -B1
00616  M01S00615.comcsnf +++|          BX5    X7-X5
00617  M01S00616.comcsnf +++| MER10    AX5    18          NEXT M TO X5
00618  M01S00617.comcsnf +++|          BX2    X5-X0
00619  M01S00618.comcsnf +++|          ZR     X2,MER9     IF SAME, DELETE EARLIER M
00620  M01S00619.comcsnf +++|          NG     B2,MER4     IF DELETE LINE FLAG SET
00621  M01S00620.comcsnf +++|          BX0    X6
00622  M01S00621.comcsnf +++|          WRITEC SCR,B2      TRANSFER LINE M TO SCR
00623  M01S00622.comcsnf +++| SNF$     IF     DEF,SNF$
00624  M01S00623.comcsnf +++|          SA4    NLSF        INCREMENT NUMBER OF SORTED LINES
00625  M01S00624.comcsnf +++|          SX6    X4+B1
00626  M01S00625.comcsnf +++|          SA6    A4
00627  M01S00626.comcsnf +++| SNF$     ENDIF
00628  M01S00627.comcsnf +++|          BX6    X0
00629  M01S00628.comcsnf +++|          EQ     MER4        LOOP TO PROCESS NEXT M
00630  M01S00629.comcsnf +++|
00631  M01S00630.comcsnf +++|*         DUMP REST OF SCR1 TO SCR.
00632  M01S00631.comcsnf +++|
00633  M01S00632.comcsnf +++| MER11    NG     B2,MER12    IF NULL LINE
00634  M01S00633.comcsnf +++|          WRITEC SCR,B2      WRITE LAST LINE OF LINE NUMBER TABLE
00635  M01S00634.comcsnf +++| MER12    SA1    LLFG        CHECK LONG LINE FLAG
00636  M01S00635.comcsnf +++|          MX0    -12
00637  M01S00636.comcsnf +++|          ZR     X1,MER15    IF LONG LINE FLAG FALSE
00638  M01S00637.comcsnf +++|          EQ     MER14       TRANSFER THE FIRST SECTION OF LONG LINE
00639  M01S00638.comcsnf +++|
00640  M01S00639.comcsnf +++| MER13    BX7    -X0*X4
00641  M01S00640.comcsnf +++|          ZR     X7,MER15    IF LINE FIT INTO *WKST*
00642  M01S00641.comcsnf +++|          BX7    X4          REPLACE FORCED *EOL* WORD
00643  M01S00642.comcsnf +++|          SA7    WKST+WKSTL-1
00644  M01S00643.comcsnf +++| MER14    WRITEW SCR,WKST,WKSTL  TRANSFER THIS SECTION
00645  M01S00644.comcsnf +++|          EQ     MER16       READ NEXT SECTION OF LONG LINE
00646  M01S00645.comcsnf +++|
00647  M01S00646.comcsnf +++| MER15    WRITEC SCR,WKST    TRANSFER LINE OR LAST PART
00648  M01S00647.comcsnf +++| MER16    READC  SCR1,WKST,WKSTL
00649  M01S00648.comcsnf +++|          ZR     X1,MER13    IF NOT *EOR*
00650  M01S00649.comcsnf +++|
00651  M01S00650.comcsnf +++|*         DUMP REST OF LINE NUMBER TABLE TO SCR AND EXIT
00652  M01S00651.comcsnf +++|
00653  M01S00652.comcsnf +++| MER17    ZR     X5,MER20    IF END OF *LNT*
00654  M01S00653.comcsnf +++| MER18    SB7    A0
00655  M01S00654.comcsnf +++|          BX0    X5          CHECK MERGE
00656  M01S00655.comcsnf +++|          SA5    A5+B1       NEXT LINE FROM LINE NUMBER TABLE
00657  M01S00656.comcsnf +++|          LX5    59-0        CHECK LINE DELETE FLAG (BIT 0)
00658  M01S00657.comcsnf +++|          SA0    X5+
00659  M01S00658.comcsnf +++|          PL     X5,MER19    IF NO LINE DELETE
00660  M01S00659.comcsnf +++|          SA0    -1
00661  M01S00660.comcsnf +++|          MX7    1           REMOVE SIGN EXTENSION
00662  M01S00661.comcsnf +++|          BX5    X7-X5
00663  M01S00662.comcsnf +++| MER19    AX5    18          NEXT M TO X5
00664  M01S00663.comcsnf +++|          BX3    X5-X0
00665  M01S00664.comcsnf +++|          ZR     X3,MER17    IF SAME LINE NUMBERS
00666  M01S00665.comcsnf +++|          NG     B7,MER17    IF LINE DELETE
00667  M01S00666.comcsnf +++|          WRITEC SCR,B7      TRANSFER LINE M TO SCR
00668  M01S00667.comcsnf +++| SNF$     IF     DEF,SNF$
00669  M01S00668.comcsnf +++|          SA4    NLSF        INCREMENT NUMBER OF SORTED LINES
00670  M01S00669.comcsnf +++|          SX6    X4+B1
00671  M01S00670.comcsnf +++|          SA6    A4
00672  M01S00671.comcsnf +++| SNF$     ENDIF
00673  M01S00672.comcsnf +++|          EQ     MER17       DUMP NEXT LINE OF LINE NUMBER TABLE
00674  M01S00673.comcsnf +++|
00675  M01S00674.comcsnf +++|*         EXIT
00676  M01S00675.comcsnf +++|
00677  M01S00676.comcsnf +++| MER20    BX6    X0
00678  M01S00677.comcsnf +++|          SA3    LAST        LAST LINE NUMBER FROM PREVIOUS SEGMENT
00679  M01S00678.comcsnf +++|          IX4    X6-X3
00680  M01S00679.comcsnf +++|          NG     X4,MER      IF LAST LINE MERGED < *LAST*
00681  M01S00680.comcsnf +++|          SA6    A3+
00682  M01S00681.comcsnf +++|          EQ     MERX        RETURN
00683  M01S00682.comcsnf +++| ELK      SPACE  4,10
00684  M01S00683.comcsnf +++|          SPACE  4,10
00685  M01S00684.comcsnf +++|          BASE   *
00686  M01S00685.comcsnf +++| QUAL$    IF     -DEF,QUAL$
00687  M01S00686.comcsnf +++|          QUAL   *
00688  M01S00687.comcsnf +++| SNF      EQU    /COMCSNF/SNF
00689  M01S00688.comcsnf +++| QUAL$    ENDIF
00690  M01S00689.comcsnf +++|          ENDX