User Tools

Site Tools


cdc:nos2.source:opl.opl871:common:comcsnf

Common COMCSNF

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcsnf +++|          CTEXT  COMCSNF - SORT NUMBERED FILE.
00002  M00S00002.comcsnf +++|          SPACE  4,10
00003  M00S00003.comcsnf +++|          IF     -DEF,QUAL$,1
00004  M00S00004.comcsnf +++|          QUAL   COMCSNF
00005  M00S00005.comcsnf +++|          BASE   D
Line S00006 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M01S00006.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP.  1980.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00007  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M00S00007.comcsnf +++| SNF      SPACE  4,10
00009  M00S00008.comcsnf +++|***       SNF - SORT NUMBERED FILE.
00010  M00S00009.comcsnf +++|*         R. E. TATE         71/03/01.
00011  M00S00010.comcsnf +++|*         W. T. SACKETT      71/03/01.
00012  M00S00011.comcsnf +++|*         L. K. TUTTLE.      79/04/27.
00013  M00S00012.comcsnf +++|          SPACE  4,40
00014  M00S00013.comcsnf +++|***              COMCSNF SORTS A CODED, LINE NUMBERED FILE.  THE FILE
00015  M00S00014.comcsnf +++|*         IS READ IN SEGMENTS.  EACH SEGMENT IS SORTED AND THE RESULT
00016  M00S00015.comcsnf +++|*         MERGED WITH THE PREVIOUSLY SORTED PORTION OF THE FILE.  THE
00017  M00S00016.comcsnf +++|*         SORT IS BASED ON THE FIRST N DIGITS OF THE LINE NUMBER FOR
00018  M00S00017.comcsnf +++|*         EACH LINE.  THE LINE ENTERED LAST FOR A GIVEN NUMBER IS THE
00019  M00S00018.comcsnf +++|*         CORRECTION LINE TO REPLACE ANY LINE HAVING THE SAME NUMBER.
00020  M00S00019.comcsnf +++|*         A LINE NUMBER FOLLOWED BY AN EMPTY LINE (CR OR ONE BLANK AND
00021  M00S00020.comcsnf +++|*         CR) IS CONSIDERED A LINE DELETE.  A LINE NUMBER WITH MORE
00022  M00S00021.comcsnf +++|*         THAN N DIGITS IS NOT CHECKED FOR LINE DELETE.  THE CHARACTER
00023  M00S00022.comcsnf +++|*         SET IS DETERMINED FROM THE FIRST CHARACTER OF THE FILE IF
00024  M00S00023.comcsnf +++|*         NOT PASSED IN AS A PARAMETER.  IF AN ERROR CONDITION IS
00025  M00S00024.comcsnf +++|*         DETECTED THE FILE IS REWOUND UNALTERED AND THE ERROR CODE
00026  M00S00025.comcsnf +++|*         IS RETURNED IN B2.
00027  M00S00026.comcsnf +++|*
00028  M00S00027.comcsnf +++|*                COMCSNF HAS THE ABILITY TO HANDLE THEORETICALLY IN-
00029  M00S00028.comcsnf +++|*         FINITE LENGTH LINES BY PROCESSING THEM A SECTION AT A TIME.
00030  M00S00029.comcsnf +++|*         THERE ARE OF COURSE PRACTICAL LIMITATIONS IMPOSED BY THE
00031  M00S00030.comcsnf +++|*         LENGTH OF THE CIRCULAR I/O BUFFER.  FOR MORE INFORMATION
00032  M00S00031.comcsnf +++|*         ON THIS SEE ROUTINE *CEB*.  ALSO PERFORMANCE WILL BE DOWN-
00033  M00S00032.comcsnf +++|*         GRADED BY MANY LONG LINES.
00034  M00S00033.comcsnf +++|*
00035  M00S00034.comcsnf +++|*                IF SNF$ IS DEFINED BY THE CALLING PROGRAM THEN THE
00036  M00S00035.comcsnf +++|*         NUMBER OF LINES IN THE FILE AFTER SORTING WILL BE RETURNED
00037  M00S00036.comcsnf +++|*         IN (X6).
00038  M00S00037.comcsnf +++|          SPACE  4,10
00039  M00S00038.comcsnf +++|*         DATA AND EQUIVALENCES.
00040  M00S00039.comcsnf +++|
00041  M00S00040.comcsnf +++| LIMT     CON    0
00042  M00S00041.comcsnf +++| WKSTL    EQU    33          WORKING STORAGE BUFFER LENGTH
00043  M00S00042.comcsnf +++| PLAD     CON    0           ADDRESS OF PARTIAL LINE IN I/O BUFFER
00044  M00S00043.comcsnf +++| PLWC     CON    0           NUMBER OF WORDS IN PARTIAL LINE
00045  M00S00044.comcsnf +++| FNT2     CON    0           FNT NAME FROM FET *SCR1*
00046  M00S00045.comcsnf +++| FTYP     CON    0           FILE TYPE (0 = DIRECT ACCESS FILE)
00047  M00S00046.comcsnf +++| INPF     CON    0           INPUT FILE FET ADDRESS
00048  M00S00047.comcsnf +++| LAST     CON    -1          LAST LINE ON SCR
00049  M00S00048.comcsnf +++| NDIG     CON    5           NUMBER OF DIGITS TO SORT ON
00050  M00S00049.comcsnf +++| CPAR     CON    -1          CHARACTER SET FLAG
00051  M00S00050.comcsnf +++| DRFG     CON    0           DATA READ FLAG
00052  M00S00051.comcsnf +++| LLFG     CON    0           LONG LINE FLAG
00053  M00S00052.comcsnf +++| ERFG     CON    0           TEMPORARY STORAGE FOR ERROR FLAG
00054  M00S00053.comcsnf +++| SNF$     IF     DEF,SNF$
00055  M00S00054.comcsnf +++| NLSF     CON    0           NUMBER OF LINES IN FILE AFTER SORT
00056  M00S00055.comcsnf +++| SNF$     ENDIF
00057  M00S00056.comcsnf +++| SNF      SPACE  4,10
00058  M00S00057.comcsnf +++|**        TABLE OF CHARACTER SET PARAMETERS.
00059  M00S00058.comcsnf +++|*
00060  M00S00059.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  M00S00060.comcsnf +++|
00062  M00S00061.comcsnf +++|
00063  M00S00062.comcsnf +++| TPAR     VFD    6/06,18/0077B,18/33B,18/55B   6/12 DISPLAY CODE
00064  M00S00063.comcsnf +++|          VFD    6/12,18/7777B,18/60B,18/40B   ASCII8
00065  M00S00064.comcsnf +++| WKST     BSS    WKSTL       WORKING STORAGE FOR SCR TRANSFER TO SCR1
00066  M00S00065.comcsnf +++| SNF      SPACE  4,25
00067  M00S00066.comcsnf +++|**        SNF - SORT NUMBERED FILE.
00068  M00S00067.comcsnf +++|*
00069  M00S00068.comcsnf +++|*         ENTRY  (X1) = FILE TYPE (0=DIRECT ACCESS).
00070  M00S00069.comcsnf +++|*                (X2) = ADDRESS OF FET FOR INPUT FILE.
00071  M00S00070.comcsnf +++|*                (X6) = NUMBER OF DIGITS TO SORT ON.
00072  M00S00071.comcsnf +++|*                (X7) = CHARACTER SET.
00073  M00S00072.comcsnf +++|*                     < 0, NOT DETERMINED.
00074  M00S00073.comcsnf +++|*                     = 0, 6/12 DISPLAY CODE.
00075  M00S00074.comcsnf +++|*                     = 1, ASCII8.
00076  M00S00075.comcsnf +++|*
00077  M00S00076.comcsnf +++|*         EXIT   (X1) = 0, SORT COMPLETE, FILE REWRITTEN.
00078  M00S00077.comcsnf +++|*                     = NON-ZERO, ERROR ENCOUNTERED.
00079  M00S00078.comcsnf +++|*                (B2) = ERROR CODE.
00080  M00S00079.comcsnf +++|*                       -1, SORT FILE EMPTY.
00081  M00S00080.comcsnf +++|*                       0, LINE WITHOUT LINE NUMBER ENCOUNTERED.
00082  M00S00081.comcsnf +++|*                       1, DIRECT ACCESS FILE NOT IN WRITE MODE.
00083  M00S00082.comcsnf +++|*                       2, NOT ENOUGH BUFFER SPACE AVAILABLE.
00084  M00S00083.comcsnf +++|*                (X6) = THE NUMBER OF LINES IN THE FILE AFTER THE SORT
00085  M00S00084.comcsnf +++|*                       IS COMPLETE (IF SNF$ IS DEFINED).
00086  M00S00085.comcsnf +++|*
00087  M00S00086.comcsnf +++|*         USES   X - ALL.
00088  M00S00087.comcsnf +++|*                A - ALL.
00089  M00S00088.comcsnf +++|*                B - 2, 7.
00090  M00S00089.comcsnf +++|*
00091  M00S00090.comcsnf +++|*         CALLS  CEB, GLT, MER.
00092  M00S00091.comcsnf +++|*
00093  M00S00092.comcsnf +++|*         MACROS READEI, READW, RECALL, RENAME, RETURN, REWIND, WRITE,
00094  M00S00093.comcsnf +++|*                WRITER, WRITEW.
00095  M00S00094.comcsnf +++|*
00096  M00S00095.comcsnf +++|*         REQUIRES  COMCCIO, COMCLFM, COMCMAC, COMCRDC, COMCRDW,
00097  M00S00096.comcsnf +++|*                   COMCSST, COMCSYS, COMCWTC, COMCWTW.
00098  M00S00097.comcsnf +++|*
00099  M00S00098.comcsnf +++|*         NOTES  THE I/O BUFFER OF THE FILE TO BE SORTED IS SPLIT
00100  M00S00099.comcsnf +++|*                INTO TWO SECTIONS.  THE TOP SECTION IS HALF THE
00101  M00S00100.comcsnf +++|*                BUFFER MINUS ONE WORD AND IS USED TO READ IN
00102  M00S00101.comcsnf +++|*                LINES FROM THE SORT FILE.  A LINE NUMBER TABLE WILL
00103  M00S00102.comcsnf +++|*                WILL BE GENERATED IN THE BOTTOM SECTION AND
00104  M00S00103.comcsnf +++|*                DUE TO OVERHEAD IN *GLT* IT HAS TO BE AT LEAST TWO
00105  M00S00104.comcsnf +++|*                WORDS LONGER THAN THE TOP SECTION.  ALSO THE
00106  M00S00105.comcsnf +++|*                TOP SECTION MUST STILL BE AT LEAST 101B WORDS
00107  M00S00106.comcsnf +++|*                TO ALLOW A PRU TO BE READ IN, SO THE MINIMUM
00108  M00S00107.comcsnf +++|*                BUFFER SIZE IS 204B WORDS, AND OPTIMUM IS (200B)N +4.
00109  M00S00108.comcsnf +++|
00110  M00S00109.comcsnf +++|
00111  M00S00110.comcsnf +++| SNF      SUBR               ENTRY/EXIT
00112  M00S00111.comcsnf +++|
00113  M00S00112.comcsnf +++|*         SAVE ENTRY PARAMETERS.
00114  M00S00113.comcsnf +++|
00115  M00S00114.comcsnf +++|          SA7    CPAR        CHARACTER SET
00116  M00S00115.comcsnf +++|          SA6    NDIG        NUMBER OF DIGITS TO SORT ON
00117  M00S00116.comcsnf +++|          BX7    X1
00118  M00S00117.comcsnf +++|          BX6    X2
00119  M00S00118.comcsnf +++|          SA7    FTYP        FILE TYPE
00120  M00S00119.comcsnf +++|          SA6    INPF        ADDRESS OF FET
00121  M00S00120.comcsnf +++|          SA3    SCR
00122  M00S00121.comcsnf +++|          SA4    SCR1
00123  M00S00122.comcsnf +++|          MX1    42          MASK IN FILE NAMES
00124  M00S00123.comcsnf +++|          BX6    X1*X3
00125  M00S00124.comcsnf +++|          BX7    X1*X4
00126  M00S00125.comcsnf +++|          SX3    B1          SET FILE NOT BUSY
00127  M00S00126.comcsnf +++|          BX7    X7+X3
00128  M00S00127.comcsnf +++|          BX6    X6+X3
00129  M00S00128.comcsnf +++|          SA7    FNT2        STORE FILE NAMES
00130  M00S00129.comcsnf +++|          SA6    A4          CHANGE *SCR1* FILE NAME
00131  M00S00130.comcsnf +++|          BX6    X6-X6       INTIALIZE FLAGS AND COUNTERS
00132  M00S00131.comcsnf +++|          SA6    DRFG
00133  M00S00132.comcsnf +++|          SX7    -1          START LAST LINE NUMBER AT -1
00134  M00S00133.comcsnf +++| SNF$     IF     DEF,SNF$
00135  M00S00134.comcsnf +++|          SA6    NLSF        CLEAR NUMBER OF SORTED LINES
00136  M00S00135.comcsnf +++| SNF$     ENDIF
00137  M00S00136.comcsnf +++|          SA7    LAST
00138  M00S00137.comcsnf +++|          SA6    ERFG        CLEAR ERROR FLAG
00139  M00S00138.comcsnf +++|          REWIND X2,R        REWIND SORT FILE
00140  M00S00139.comcsnf +++|          REWIND SCR1,R      REWIND SCR1
00141  M00S00140.comcsnf +++|          REWIND SCR,R       REWIND SCR
00142  M00S00141.comcsnf +++|          SA2    INPF
00143  M00S00142.comcsnf +++|          SA1    X2+1        FIRST
00144  M00S00143.comcsnf +++|          MX6    -18
00145  M00S00144.comcsnf +++|          BX1    -X6*X1
00146  M00S00145.comcsnf +++|          SA3    X2+4        LIMIT
00147  M00S00146.comcsnf +++|          BX7    -X6*X3
00148  M00S00147.comcsnf +++|          BX6    X6*X3
00149  M00S00148.comcsnf +++|          IX4    X7-X1       SIZE OF BUFFER
00150  M00S00149.comcsnf +++|          SB2    B1+B1
00151  M00S00150.comcsnf +++|          SX0    X4-204B     CHECK FOR BUFFER .LT. 204B WORDS
00152  M00S00151.comcsnf +++|          NG     X0,SNF7     IF BUFFER IS .LT. 204B WORDS
00153  M00S00152.comcsnf +++|          SA7    LIMT
00154  M00S00153.comcsnf +++|          AX4    1
00155  M00S00154.comcsnf +++|          IX4    X1+X4       NEW LIMIT
00156  M00S00155.comcsnf +++|          SX4    X4-1        LEAVE TWO EXTRA WORDS FOR *LNT* OVERHEAD
00157  M00S00156.comcsnf +++|          BX6    X6+X4
00158  M00S00157.comcsnf +++|          SA6    A3
00159  M00S00158.comcsnf +++|          EQ     SNF2        BEGIN READING IN FILE
00160  M00S00159.comcsnf +++|
00161  M00S00160.comcsnf +++|*         ENTER MAIN LOOP.
00162  M00S00161.comcsnf +++|
00163  M00S00162.comcsnf +++| SNF1     SA1    X2+B1
00164  M00S00163.comcsnf +++|          SX6    X1
00165  M00S00164.comcsnf +++|          SA6    A1+B1       RESET IN AND OUT ON INPUT FILE
00166  M00S00165.comcsnf +++|          SA6    A6+B1
00167  M00S00166.comcsnf +++|          SA4    PLWC        CHECK FOR PARTIAL LINE
00168  M00S00167.comcsnf +++|          ZR     X4,SNF2     IF NO PARTIAL LINE
00169  M00S00168.comcsnf +++|          SA3    PLAD
00170  M00S00169.comcsnf +++|          WRITEW X2,X3,X4    MOVE PARTIAL LINE TO TOP OF BUFFER
00171  M00S00170.comcsnf +++| SNF2     READEI X2          READ NEXT SEGMENT FROM INPUT FILE
00172  M00S00171.comcsnf +++|          RECALL SCR
00173  M00S00172.comcsnf +++|          SA1    X2
00174  M00S00173.comcsnf +++|          SA2    SCR1
00175  M00S00174.comcsnf +++|          BX1    X1-X2
00176  M00S00175.comcsnf +++|          AX1    18
00177  M00S00176.comcsnf +++|          ZR     X1,SNF3     IF *SCR* ALREADY HAS ITS OWN FNT NAME
00178  M00S00177.comcsnf +++|          RENAME SCR,SCR1,R
00179  M00S00178.comcsnf +++| SNF3     SA2    INPF        CHECK FOR DATA READ
00180  M00S00179.comcsnf +++|          SA1    X2+2        IN
00181  M00S00180.comcsnf +++|          SA3    A1+B1       OUT
00182  M00S00181.comcsnf +++|          IX0    X1-X3
00183  M00S00182.comcsnf +++|          ZR     X0,SNF4     IF NO DATA READ
00184  M00S00183.comcsnf +++|          RJ     CEB         CHECK END OF BUFFER FOR END OF LINE
00185  M00S00184.comcsnf +++|          NZ     X1,SNF7     IF ERROR
00186  M00S00185.comcsnf +++|          RJ     GLT         GENERATE LINE NUMBER TABLE
00187  M00S00186.comcsnf +++|          NZ     X1,SNF7     IF ERROR
00188  M00S00187.comcsnf +++|          RJ     MER         MERGE SCR1 AND I TO SCR
00189  M00S00188.comcsnf +++|          WRITE  SCR
00190  M00S00189.comcsnf +++| SNF4     SA2    INPF
00191  M00S00190.comcsnf +++|          SA1    X2
00192  M00S00191.comcsnf +++|          LX1    59-9
00193  M00S00192.comcsnf +++|          PL     X1,SNF1     IF NOT *EOI* ON INPUT FILE
00194  M00S00193.comcsnf +++|
00195  M00S00194.comcsnf +++|*         PROCESS SORTED FILE.
00196  M00S00195.comcsnf +++|
00197  M00S00196.comcsnf +++|          SA1    DRFG        CHECK IF DATA WAS EVER READ
00198  M00S00197.comcsnf +++|          SB2    -B1
00199  M00S00198.comcsnf +++|          ZR     X1,SNF7     IF EMPTY FILE
00200  M00S00199.comcsnf +++|          SA1    LIMT        RESTORE LIMIT IN FET
00201  M00S00200.comcsnf +++|          SA2    INPF
00202  M00S00201.comcsnf +++|          SA2    X2+4
00203  M00S00202.comcsnf +++|          MX6    -18
00204  M00S00203.comcsnf +++|          BX6    X6*X2
00205  M00S00204.comcsnf +++|          BX6    X6+X1
00206  M00S00205.comcsnf +++|          SA6    A2
00207  M00S00206.comcsnf +++|          WRITER SCR,R
00208  M00S00207.comcsnf +++|          SA1    FTYP
00209  M00S00208.comcsnf +++|          ZR     X1,SNF5     IF INPUT WAS DIRECT ACCESS FILE
00210  M00S00209.comcsnf +++|          SA1    INPF
00211  M00S00210.comcsnf +++|          SA1    X1
00212  M00S00211.comcsnf +++|          RENAME X2,X1
00213  M00S00212.comcsnf +++|          EQ     SNF8        RETURN/REWIND FILES
00214  M00S00213.comcsnf +++|
00215  M00S00214.comcsnf +++| SNF5     REWIND X2,R        COPY SCR TO INPUT
00216  M00S00215.comcsnf +++|          READEI X2
00217  M00S00216.comcsnf +++|          SA5    SCR1+1
00218  M00S00217.comcsnf +++|          SA0    X5
00219  M00S00218.comcsnf +++|          SA2    INPF
00220  M00S00219.comcsnf +++|          REWIND X2,R
00221  M00S00220.comcsnf +++| SNF6     SA5    SCR1+4
00222  M00S00221.comcsnf +++|          SX6    A0+B1
00223  M00S00222.comcsnf +++|          IX5    X5-X6
00224  M00S00223.comcsnf +++|          READW  SCR,A0,X5
00225  M00S00224.comcsnf +++|          SB7    A0
00226  M00S00225.comcsnf +++|          SB7    B6-B7
00227  M00S00226.comcsnf +++|          SA2    INPF
00228  M00S00227.comcsnf +++|          BX5    X1
00229  M00S00228.comcsnf +++|          WRITEW X2,A0,B7
00230  M00S00229.comcsnf +++|          PL     X5,SNF6     IF COPY NOT COMPLETE
00231  M00S00230.comcsnf +++|          WRITER X2          EMPTY BUFFER
00232  M00S00231.comcsnf +++|          EQ     SNF8        RETURN/REWIND FILES
00233  M00S00232.comcsnf +++|
00234  M00S00233.comcsnf +++| SNF7     SX6    1           SET ERROR FLAG
00235  M00S00234.comcsnf +++|          SA6    ERFG
00236  M00S00235.comcsnf +++| SNF8     SA2    SCR1        RESTORE FET NAMES
00237  M00S00236.comcsnf +++|          BX6    X2
00238  M00S00237.comcsnf +++|          SA6    SCR
00239  M00S00238.comcsnf +++|          SA2    FNT2
00240  M00S00239.comcsnf +++|          BX6    X2
00241  M00S00240.comcsnf +++|          SA6    SCR1
00242  M00S00241.comcsnf +++|          RETURN SCR,R       RETURN SCRATCH FILES
00243  M00S00242.comcsnf +++|          RETURN SCR1,R
00244  M00S00243.comcsnf +++|          SA2    INPF        REWIND SORT FILE
00245  M00S00244.comcsnf +++|          REWIND X2,R
00246  M00S00245.comcsnf +++|          SA1    ERFG        RESTORE SAVED VALUE OF ERROR FLAG
00247  M00S00246.comcsnf +++| SNF$     IF     DEF,SNF$
00248  M00S00247.comcsnf +++|          SA3    NLSF        NUMBER OF LINES IN SORTED FILE
00249  M00S00248.comcsnf +++|          BX6    X3
00250  M00S00249.comcsnf +++| SNF$     ENDIF
00251  M00S00250.comcsnf +++|          EQ     SNFX        RETURN
00252  M00S00251.comcsnf +++| GLT      SPACE  4,20
00253  M00S00252.comcsnf +++|**        GLT - GENERATE LINE NUMBER TABLE.
00254  M00S00253.comcsnf +++|*
00255  M00S00254.comcsnf +++|*         EXIT   (X0) = FWA OF SORTED LINE NUMBER TABLE.
00256  M00S00255.comcsnf +++|*                (X1) = 0, IF NORMAL RETURN.
00257  M00S00256.comcsnf +++|*                     = 1, IF ERROR RETURN.
00258  M00S00257.comcsnf +++|*                (B2) = ERROR CODE, IF (X1) = 1.
00259  M00S00258.comcsnf +++|*                (DRFG) = 1.
00260  M00S00259.comcsnf +++|*
00261  M00S00260.comcsnf +++|*         USES   X - 0, 1, 2, 3, 5, 6, 7.
00262  M00S00261.comcsnf +++|*                A - 1, 2, 3, 5, 7.
00263  M00S00262.comcsnf +++|*                B - 2, 3, 6, 7.
00264  M00S00263.comcsnf +++|*
00265  M00S00264.comcsnf +++|*         CALLS  DCP, GLN, SST=.
00266  M00S00265.comcsnf +++|
00267  M00S00266.comcsnf +++|
00268  M00S00267.comcsnf +++| GLT      SUBR               ENTRY/EXIT
00269  M00S00268.comcsnf +++|          SA1    INPF
00270  M00S00269.comcsnf +++|          SA1    X1+B1       *FIRST*
00271  M00S00270.comcsnf +++|          SA2    A1+B1       *IN*
00272  M00S00271.comcsnf +++|          SA3    A2+B1       *OUT*
00273  M00S00272.comcsnf +++|          SA5    A3+B1       *LIMIT*
00274  M00S00273.comcsnf +++|          SX0    X5          *LNT* WILL START AT *LIMIT*
00275  M00S00274.comcsnf +++|          MX5    -18
00276  M00S00275.comcsnf +++|          SX7    B1
00277  M00S00276.comcsnf +++|          IX2    X2-X1       *IN* - *FIRST*
00278  M00S00277.comcsnf +++|          SA7    DRFG        SET DATA READ FLAG
00279  M00S00278.comcsnf +++|          BX5    -X5*X2      NUMBER OF WORDS TO READ
00280  M00S00279.comcsnf +++|          SA2    X3          READ FIRST WORD
00281  M00S00280.comcsnf +++|          RJ     DCP         DEFINE CHARACTER SET PARAMETERS
00282  M00S00281.comcsnf +++|          ZR     X2,GLT9     IF NO LINE NUMBER FOUND
00283  M00S00282.comcsnf +++|          BX7    X7-X7       ZERO WORD TABLE DELIMITER
00284  M00S00283.comcsnf +++|          SA7    X0
00285  M00S00284.comcsnf +++| GLT1     BX1    X2
00286  M00S00285.comcsnf +++|          NX6,B3 X7          (X6) = 0, (B3) = 48
00287  M00S00286.comcsnf +++|          RJ     GLN         GET LINE NUMBER
00288  M00S00287.comcsnf +++|          SB2    47
00289  M00S00288.comcsnf +++|          SX7    A2          ADDRESS OF LINE
00290  M00S00289.comcsnf +++|          LX6    18          POSITION LINE NUMBER
00291  M00S00290.comcsnf +++|          EQ     B2,B3,GLT9  IF NO LINE NUMBER
00292  M00S00291.comcsnf +++|          ZR     X1,GLT4     IF POSSIBLE NULL LINE
00293  M00S00292.comcsnf +++| GLT2     BX6    X6+X7
00294  M00S00293.comcsnf +++|          LX7    X6,B1       LEAVE BIT 0 FOR LINE DELETE FLAG
00295  M00S00294.comcsnf +++|          SA7    A7+B1       STORE TABLE ENTRY
00296  M00S00295.comcsnf +++|          MX1    -12
00297  M00S00296.comcsnf +++| GLT3     BX7    -X1*X2
00298  M00S00297.comcsnf +++|          SA2    A2+B1       READ NEXT WORD
00299  M00S00298.comcsnf +++|          SX5    X5-1        DECREMENT NUMBER OF WORDS TO READ
00300  M00S00299.comcsnf +++|          NZ     X7,GLT3     IF NOT END OF LINE
00301  M00S00300.comcsnf +++|          PL     X5,GLT1     IF MORE WORDS TO READ
00302  M00S00301.comcsnf +++|          SA7    A7+1        SET TERMINATOR ZERO WORD
00303  M00S00302.comcsnf +++|          SX0    X0+1        STARTING ADDRESS OF *LNT* FOR SORT
00304  M00S00303.comcsnf +++|          SB7    X0
00305  M00S00304.comcsnf +++|          SX1    A7-B7       NUMBER OF ENTRIES IN *LNT*
00306  M00S00305.comcsnf +++|          RJ     SST=        SORT TABLE
00307  M00S00306.comcsnf +++|          SX1    B0          SET NO ERROR ENCOUNTERED
00308  M00S00307.comcsnf +++|          SB2    B0          SET *LNT* GENERATED
00309  M00S00308.comcsnf +++|          EQ     GLTX        RETURN
00310  M00S00309.comcsnf +++|
00311  M00S00310.comcsnf +++|*         CHECK POSSIBLE LINE DELETE.
00312  M00S00311.comcsnf +++|
00313  M00S00312.comcsnf +++| GLT4     SA1    CPAR
00314  M00S00313.comcsnf +++|          SA1    X1+TPAR     GET CHARACTER SET PARAMETERS
00315  M00S00314.comcsnf +++|          SB6    -B6         ZERO CHARACTER
00316  M00S00315.comcsnf +++|          SB2    X1          BLANK CHARACTER
00317  M00S00316.comcsnf +++|          SB2    -B2
00318  M00S00317.comcsnf +++|          SX3    X3+B6       ADD ON CODED ZERO
00319  M00S00318.comcsnf +++|          SX1    X3+B2       SUBTRACT BLANK
00320  M00S00319.comcsnf +++|          SB6    -B6         RESTORE -0
00321  M00S00320.comcsnf +++|          ZR     X3,GLT5     IF PROBABLE LINE DELETE
00322  M00S00321.comcsnf +++|          NZ     X1,GLT2     IF NOT DELETE
00323  M00S00322.comcsnf +++| GLT5     SA1    CPAR
00324  M00S00323.comcsnf +++|          SA3    A2+1
00325  M00S00324.comcsnf +++|          SB3    B3-43
00326  M00S00325.comcsnf +++|          NZ     X1,GLT7     IF ASCII8 CODE SET
00327  M00S00326.comcsnf +++| GLT6     SB3    B3+5        SET TO CHECK NINE AND TEN DIGITS
00328  M00S00327.comcsnf +++|          SX1    X1-2
00329  M00S00328.comcsnf +++| GLT7     GE     B3,B1,GLT8  IF < 9 OR < 4
00330  M00S00329.comcsnf +++|          ZR     X3,GLT8     IF EOL FOUND
00331  M00S00330.comcsnf +++|          ZR     B3,GLT2     IF EXACTLY 9 OR 4
00332  M00S00331.comcsnf +++|          LX3    X3,B7
00333  M00S00332.comcsnf +++|          SX3    X3+B2       COMPARE TO BLANK
00334  M00S00333.comcsnf +++|          ZR     X3,GLT8     IF LINE DELETE
00335  M00S00334.comcsnf +++|          SA3    A3+1
00336  M00S00335.comcsnf +++|          PL     X1,GLT6     IF ASCII8
00337  M00S00336.comcsnf +++|          EQ     GLT2        NOT LINE DELETE
00338  M00S00337.comcsnf +++|
00339  M00S00338.comcsnf +++| GLT8     MX1    1           SET DELETE FLAG
00340  M00S00339.comcsnf +++|          BX6    X6+X1
00341  M00S00340.comcsnf +++|          EQ     GLT2        LOOP TO BUILD ENTRY
00342  M00S00341.comcsnf +++|
00343  M00S00342.comcsnf +++|*         ERROR EXITS.
00344  M00S00343.comcsnf +++|
00345  M00S00344.comcsnf +++| GLT9     SX1    B1          SET UP ERROR RETURN
00346  M00S00345.comcsnf +++|          SB2    B0          NO LINE NUMBER ERROR CODE
00347  M00S00346.comcsnf +++|          EQ     GLT         RETURN
00348  M00S00347.comcsnf +++|          EQ     GLTX        RETURN
00349  M00S00348.comcsnf +++|          SPACE  4,10
00350  M00S00349.comcsnf +++|**        CEB - CHECK END OF BUFFER FOR END OF LINE.
00351  M00S00350.comcsnf +++|*
00352  M00S00351.comcsnf +++|*         *CEB* STORES THE ADDRESS OF A PARTIAL LINE ( IF ONE WAS
00353  M00S00352.comcsnf +++|*         LEFT IN THE I/O BUFFER WHEN THE LAST SEGMENT WAS READ)
00354  M00S00353.comcsnf +++|*         IN *PLAD* AND RESETS *IN* TO KEEP THE PARTIAL LINE
00355  M00S00354.comcsnf +++|*         FROM BEING SEEN BY *GLT* AND *MER*. *SNF* WILL MOVE THE
00356  M00S00355.comcsnf +++|*         PARTIAL LINE TO THE TOP OF THE BUFFER BEFORE THE NEXT
00357  M00S00356.comcsnf +++|*         READ AND RESET THE FET POINTERS.  IN ADDITION *CEB* MAKES
00358  M00S00357.comcsnf +++|*         SURE THAT THERE WILL BE AT LEAST 101B WORDS OF ROOM LEFT IN
00359  M00S00358.comcsnf +++|*         THE BUFFER ONCE THE PARTIAL LINE IS MOVED TO THE TOP OF
00360  M00S00359.comcsnf +++|*         THE BUFFER TO ALLOW AT LEAST ONE PRU TO BE READ IN.
00361  M00S00360.comcsnf +++|*
00362  M00S00361.comcsnf +++|*         EXIT   (PLAD) = ADDRESS OF PARTIAL LINE.
00363  M00S00362.comcsnf +++|*                (PLWC) = NUMBER OF WORDS IN PARTIAL LINE.
00364  M00S00363.comcsnf +++|*                (X1) = 0 IF NO ERROR.
00365  M00S00364.comcsnf +++|*                (X1) = 1 IF NOT ENOUGH BUFFER SPACE AVAILABLE.
00366  M00S00365.comcsnf +++|*                (B2) = 2 IF NOT ENOUGH BUFFER SPACE AVAILABLE.
00367  M00S00366.comcsnf +++|*
00368  M00S00367.comcsnf +++|*         USES   X - ALL.
00369  M00S00368.comcsnf +++|*                A - 2, 3, 4, 5, 7.
00370  M00S00369.comcsnf +++|*                B - 2, 3 ,4, 5
00371  M00S00370.comcsnf +++|*
00372  M00S00371.comcsnf +++|*         MACROS RECALL.
00373  M00S00372.comcsnf +++|
00374  M00S00373.comcsnf +++| CEB2     SX7    B3+B1
00375  M00S00374.comcsnf +++|          SA7    A4          RESET *IN* TO EXCLUDE PARTIAL LINE
00376  M00S00375.comcsnf +++|          SA7    PLAD        STORE ADDRESS OF PARTIAL LINE
00377  M00S00376.comcsnf +++| CEB3     SX7    B5
00378  M00S00377.comcsnf +++|          SA7    PLWC        STORE NUMBER OF WORDS
00379  M00S00378.comcsnf +++|          BX1    X1-X1       CLEAR ERROR FLAG
00380  M00S00379.comcsnf +++|
00381  M00S00380.comcsnf +++| CEB      SUBR               ENTRY/EXIT
00382  M00S00381.comcsnf +++|          SA2    INPF
00383  M00S00382.comcsnf +++|          RECALL X2
00384  M00S00383.comcsnf +++|          SB5    B0          START NUMBER OF WORDS AT ZERO
00385  M00S00384.comcsnf +++|          SA2    X2
00386  M00S00385.comcsnf +++|          LX2    59-9
00387  M00S00386.comcsnf +++|          SA3    A2+B1       *FIRST*
00388  M00S00387.comcsnf +++|          NG     X2,CEB3     IF EOI ENCOUNTERED
00389  M00S00388.comcsnf +++|          SA4    A3+1        *IN*
00390  M00S00389.comcsnf +++|          SA5    A2+4        *LIMIT*
00391  M00S00390.comcsnf +++|          IX0    X5-X3       *LIMIT*-*FIRST*
00392  M00S00391.comcsnf +++|          MX2    -12
00393  M00S00392.comcsnf +++|          SB4    X0-101B     NUMBER OF WORDS THAT CAN BE READ
00394  M00S00393.comcsnf +++|          SB3    X4-1
00395  M00S00394.comcsnf +++| CEB1     SA3    B3          GET WORD FROM END OF DATA
00396  M00S00395.comcsnf +++|          BX6    -X2*X3
00397  M00S00396.comcsnf +++|          ZR     X6,CEB2     IF *EOL* FOUND
00398  M00S00397.comcsnf +++|          SB3    B3-B1
00399  M00S00398.comcsnf +++|          SB5    B5+B1       INCREMENT NUMBER OF WORDS READ
00400  M00S00399.comcsnf +++|          LE     B5,B4,CEB1  IF MORE WORDS CAN BE READ
00401  M00S00400.comcsnf +++|          SB2    B1+B1       SET ERROR CODE FOR NOT ENOUGH BUFFER SPACE
00402  M00S00401.comcsnf +++|          SX1    B1          SET ERROR FLAG
00403  M00S00402.comcsnf +++|          EQ     CEBX        RETURN
00404  M00S00403.comcsnf +++| DCP      SPACE  4,20
00405  M00S00404.comcsnf +++|**        DCP - DEFINE CHARACTER PARAMETERS.
00406  M00S00405.comcsnf +++|*         DETERMINE CHARACTER SET OF INPUT FILE AND SET
00407  M00S00406.comcsnf +++|*         UP PARAMETERS ACCORDINGLY.
00408  M00S00407.comcsnf +++|*
00409  M00S00408.comcsnf +++|*         ENTRY  (X2) = FIRST WORD OF INPUT BUFFER.
00410  M00S00409.comcsnf +++|*                (CPAR) = -1, CHARACTER SET TO BE DETERMINED.
00411  M00S00410.comcsnf +++|*                       = 0, CHARACTER SET = 6/12 DISPLAY CODE.
00412  M00S00411.comcsnf +++|*                       = 1, CHARACTER SET = ASCII8.
00413  M00S00412.comcsnf +++|*
00414  M00S00413.comcsnf +++|*         EXIT   (X2) = NON ZERO IF NORMAL RETURN.
00415  M00S00414.comcsnf +++|*                       0, IF ERROR RETURN.
00416  M00S00415.comcsnf +++|*                (X4) = CHARACTER MASK.
00417  M00S00416.comcsnf +++|*                (B4) = 48 - NDIG - 1.
00418  M00S00417.comcsnf +++|*                (B5) = -(FIRST NON-NUMERIC CHARACTER).
00419  M00S00418.comcsnf +++|*                (B6) = -(FIRST NUMERIC CHARACTER).
00420  M00S00419.comcsnf +++|*                (B7) = SHIFT COUNT.
00421  M00S00420.comcsnf +++|*
00422  M00S00421.comcsnf +++|*         USES   X - 1, 2, 4, 7.
00423  M00S00422.comcsnf +++|*                A - 1, 7.
00424  M00S00423.comcsnf +++|*                B - 3, 4, 5, 6, 7.
00425  M00S00424.comcsnf +++|
00426  M00S00425.comcsnf +++|
00427  M00S00426.comcsnf +++| DCP4     SA1    X1+TPAR     GET PARAMETER WORD
00428  M00S00427.comcsnf +++|          AX1    18          GET ZERO CHARACTER
00429  M00S00428.comcsnf +++|          SB6    X1
00430  M00S00429.comcsnf +++|          SB6    -B6
00431  M00S00430.comcsnf +++|          AX1    18
00432  M00S00431.comcsnf +++|          SB5    B6-10       GET FIRST NON-NUMERIC
00433  M00S00432.comcsnf +++|          SX4    X1          GET CHARACTER MASK
00434  M00S00433.comcsnf +++|          AX1    18
00435  M00S00434.comcsnf +++|          SB7    X1          GET SHIFT COUNT
00436  M00S00435.comcsnf +++|          SA1    NDIG        SET UP CHARACTER COUNT CONSTANT
00437  M00S00436.comcsnf +++|          SB4    X1+B1
00438  M00S00437.comcsnf +++|          SB3    48
00439  M00S00438.comcsnf +++|          SX1    B0
00440  M00S00439.comcsnf +++|          SB4    B3-B4
00441  M00S00440.comcsnf +++|
00442  M00S00441.comcsnf +++| DCP      SUBR               ENTRY/EXIT
00443  M00S00442.comcsnf +++|          SA1    CPAR        CHECK CHARACTER SET
00444  M00S00443.comcsnf +++|          PL     X1,DCP4     IF ALREADY DETERMINED
00445  M00S00444.comcsnf +++|
00446  M00S00445.comcsnf +++|*         CHECK IF 6/12 DISPLAY CODE.
00447  M00S00446.comcsnf +++|
00448  M00S00447.comcsnf +++|          LX2    6
00449  M00S00448.comcsnf +++|          MX4    -6
00450  M00S00449.comcsnf +++|          BX4    -X4*X2      FIRST CHARACTER
00451  M00S00450.comcsnf +++|          LX2    6
00452  M00S00451.comcsnf +++|          SX4    X4-33B
00453  M00S00452.comcsnf +++|          NG     X4,DCP1     IF ALPHABETIC
00454  M00S00453.comcsnf +++|          SX4    X4-10
00455  M00S00454.comcsnf +++|          PL     X4,DCP1     IF NON-NUMERIC
00456  M00S00455.comcsnf +++|          LX2    -12
00457  M00S00456.comcsnf +++|          SX1    B0          SET 6/12 DISPLAY CODE FLAG VALUE
00458  M00S00457.comcsnf +++|          EQ     DCP2        COMPLETE PARAMETER SETUP
00459  M00S00458.comcsnf +++|
00460  M00S00459.comcsnf +++|*         CHECK IF ASCII8.
00461  M00S00460.comcsnf +++|
00462  M00S00461.comcsnf +++| DCP1     MX4    -12
00463  M00S00462.comcsnf +++|          BX4    -X4*X2      FIRST CHARACTER
00464  M00S00463.comcsnf +++|          SX1    B1          SET ASCII8 FLAG VALUE
00465  M00S00464.comcsnf +++|          LX2    -12
00466  M00S00465.comcsnf +++|          SX4    X4-60B
00467  M00S00466.comcsnf +++|          NG     X4,DCP3     IF NOT NUMERIC
00468  M00S00467.comcsnf +++|          SX4    X4-10
00469  M00S00468.comcsnf +++|          PL     X4,DCP3     IF NOT NUMERIC
00470  M00S00469.comcsnf +++| DCP2     BX7    X1
00471  M00S00470.comcsnf +++|          SA7    A1          CHARACTER SET FLAG
00472  M00S00471.comcsnf +++|          EQ     DCP4        SET UP PARAMETERS
00473  M00S00472.comcsnf +++|
00474  M00S00473.comcsnf +++| DCP3     SX2    B0+         SET ERROR EXIT
00475  M00S00474.comcsnf +++|          EQ     DCPX        RETURN
00476  M00S00475.comcsnf +++| GLN      SPACE  4,20
00477  M00S00476.comcsnf +++|**        GLN - GET LINE NUMBER.
00478  M00S00477.comcsnf +++|*
00479  M00S00478.comcsnf +++|*         ENTRY  (X1) = (X2) = FIRST WORD OF LINE.
00480  M00S00479.comcsnf +++|*                (X4) = CHARACTER MASK.
00481  M00S00480.comcsnf +++|*                (X6) = ZERO.
00482  M00S00481.comcsnf +++|*                (A2) = ADDRESS FIRST WORD OF LINE.
00483  M00S00482.comcsnf +++|*                (B3) = 48.
00484  M00S00483.comcsnf +++|*                (B4) = 48 - NDIG - 1.
00485  M00S00484.comcsnf +++|*                (B5) = -(FIRST NON-NUMERIC).
00486  M00S00485.comcsnf +++|*                (B6) = -(ZERO CHARACTER).
00487  M00S00486.comcsnf +++|*                (B7) = SHIFT COUNT.
00488  M00S00487.comcsnf +++|*
00489  M00S00488.comcsnf +++|*         EXIT   (X1) = DATA FOLLOWING LINE NUMBER.
00490  M00S00489.comcsnf +++|*                (X6) = PSEUDO-HEX LINE NUMBER.
00491  M00S00490.comcsnf +++|*
00492  M00S00491.comcsnf +++|*         USES   X - 1, 3, 6, 7.
00493  M00S00492.comcsnf +++|*                A - 1, 3.
00494  M00S00493.comcsnf +++|*                B - 2, 3.
00495  M00S00494.comcsnf +++|
00496  M00S00495.comcsnf +++|
00497  M00S00496.comcsnf +++| GLN      SUBR               ENTRY/EXIT
00498  M00S00497.comcsnf +++| GLN1     LX1    B7
00499  M00S00498.comcsnf +++|          BX3    X4*X1       GET NEXT CHARACTER
00500  M00S00499.comcsnf +++|          SX7    X3+B5       SUBTRACT FIRST NON-DIGIT
00501  M00S00500.comcsnf +++|          BX1    -X4*X1      CLEAR CHARACTER BEING PROCESSED
00502  M00S00501.comcsnf +++|          SX3    X3+B6       SUBTRACT ZERO CHARACTER
00503  M00S00502.comcsnf +++|          BX7    -X7+X3
00504  M00S00503.comcsnf +++|          SB3    B3-1
00505  M00S00504.comcsnf +++|          NG     X7,GLNX     IF NOT NUMERIC
00506  M00S00505.comcsnf +++|          EQ     B3,B4,GLNX  IF MAXIMUM NUMBER OF DIGITS PROCESSED
00507  M00S00506.comcsnf +++|          LX6    4
00508  M00S00507.comcsnf +++|          IX6    X6+X3       ACCUMULATE DIGIT
00509  M00S00508.comcsnf +++|          NZ     X1,GLN1     IF WORD NOT USED NOT UP
00510  M00S00509.comcsnf +++|          SA3    CPAR
00511  M00S00510.comcsnf +++|          ZR     X3,GLN1     IF NOT ASCII8
00512  M00S00511.comcsnf +++|          SB2    B3-43
00513  M00S00512.comcsnf +++|          NZ     B2,GLN1     IF NOT EXACTLY FIVE DIGITS PROCESSED
00514  M00S00513.comcsnf +++|          SA1    A2+1
00515  M00S00514.comcsnf +++|          EQ     GLN1        CONTINUE PROCESSING
00516  M00S00515.comcsnf +++| MER      SPACE  4,15
00517  M00S00516.comcsnf +++|**        MER - MERGE LAST SORTED SEGMENT WITH NEW INPUT USING DATA
00518  M00S00517.comcsnf +++|*                FROM LINE NUMBER TABLE TO WRITE TO SCR.
00519  M00S00518.comcsnf +++|*
00520  M00S00519.comcsnf +++|*         ENTRY  (X0) = FWA LINE NUMBER TABLE.
00521  M00S00520.comcsnf +++|*                (LAST) = LAST LINE NUMBER FROM PREVIOUS SEGMENT.
00522  M00S00521.comcsnf +++|*
00523  M00S00522.comcsnf +++|*         EXIT   SEGMENTS MERGED ONTO SCR.
00524  M00S00523.comcsnf +++|*
00525  M00S00524.comcsnf +++|*         USES   X - ALL.
00526  M00S00525.comcsnf +++|*                A - ALL.
00527  M00S00526.comcsnf +++|*                B - 2, 3, 7.
00528  M00S00527.comcsnf +++|*
00529  M00S00528.comcsnf +++|*         CALLS  DCP, GLN.
00530  M00S00529.comcsnf +++|*
00531  M00S00530.comcsnf +++|*         MACROS READ, READC, REWIND, WRITEC, WRITER, WRITEW.
00532  M00S00531.comcsnf +++|
00533  M00S00532.comcsnf +++|
00534  M00S00533.comcsnf +++| MER      SUBR               ENTRY/EXIT
00535  M00S00534.comcsnf +++|          SA5    X0          FIRST ENTRY IN LINE NUMBER TABLE
00536  M00S00535.comcsnf +++|          LX5    59-0
00537  M00S00536.comcsnf +++|          SA1    LAST        GET LAST LINE NUMBER OF PREVIOUS SEGMENT
00538  M00S00537.comcsnf +++|          SA0    X5          (A0) = BUFFER ADDRESS OF LINE M
00539  M00S00538.comcsnf +++|          MX7    1
00540  M00S00539.comcsnf +++|          PL     X5,MER1     IF NOT NULL LINE
00541  M00S00540.comcsnf +++|          SA0    -1          LINE DELETE FLAG
00542  M00S00541.comcsnf +++|          BX5    X7-X5       CLEAR LINE DELETE FLAG
00543  M00S00542.comcsnf +++| MER1     AX5    18          (X5) = M, LINE NUMBER ON MERGE SEGMENT
00544  M00S00543.comcsnf +++|          IX0    X1-X5
00545  M00S00544.comcsnf +++|          NG     X0,MER18    IF NO OVERLAP OF FILES
00546  M00S00545.comcsnf +++|          WRITER SCR         EMPTY SCR BUFFER
00547  M00S00546.comcsnf +++|          REWIND X2,R
00548  M00S00547.comcsnf +++|          SA3    FNT2
00549  M00S00548.comcsnf +++|          BX6    X3
00550  M00S00549.comcsnf +++|          SA6    X2          SCR FNT NAME SCR1
00551  M00S00550.comcsnf +++|          SA3    SCR1+B1     SET IN=OUT=FIRST FOR SCR1
00552  M00S00551.comcsnf +++|          SX6    X3
00553  M00S00552.comcsnf +++|          SA6    A3+B1
00554  M00S00553.comcsnf +++|          SA6    A6+B1
00555  M00S00554.comcsnf +++|          READ   A3-B1       READ SCR1, OLD FILE SEGMENT
00556  M00S00555.comcsnf +++|
00557  M00S00556.comcsnf +++|*         GET LINE NUMBER S FROM SCR1 AND WRITE LINE TO WKST.
00558  M00S00557.comcsnf +++|
00559  M00S00558.comcsnf +++| MER2     SX7    B0+         CLEAR LONG LINE FLAG
00560  M00S00559.comcsnf +++|          SA7    LLFG
00561  M00S00560.comcsnf +++|          READC  SCR1,WKST,WKSTL
00562  M00S00561.comcsnf +++|          NZ     X1,MER17    IF EOR ON SCR1
00563  M00S00562.comcsnf +++|          MX7    -12
00564  M00S00563.comcsnf +++|          BX7    -X7*X4
00565  M00S00564.comcsnf +++|          ZR     X7,MER3     IF LINE FIT INTO *WKST*
00566  M00S00565.comcsnf +++|          SA7    LLFG        SET LONG LINE FLAG TO TRUE
00567  M00S00566.comcsnf +++|          BX7    X4          REPLACE FORCED *EOL* WORD
00568  M00S00567.comcsnf +++|          SA7    WKST+WKSTL-1
00569  M00S00568.comcsnf +++| MER3     RJ     DCP         DEFINE CHARACTER PARAMETERS
00570  M00S00569.comcsnf +++|          SA2    WKST        GET LINE NUMBER S
00571  M00S00570.comcsnf +++|          NX6,B3 X1          (X6) = 0, (B3) = 48
00572  M00S00571.comcsnf +++|          BX1    X2
00573  M00S00572.comcsnf +++|          RJ     GLN
00574  M00S00573.comcsnf +++| MER4     IX0    X5-X6       M - S
00575  M00S00574.comcsnf +++|          NG     X0,MER9     IF M .LT. S
00576  M00S00575.comcsnf +++|          NZ     X0,MER6     IF M .NE. S
00577  M00S00576.comcsnf +++| SNF$     IF     DEF,SNF$
00578  M00S00577.comcsnf +++|          SA1    NLSF        DECREMENT NUMBER OF SORTED LINES
00579  M00S00578.comcsnf +++|          SX7    X1-1
00580  M00S00579.comcsnf +++|          SA7    A1+
00581  M00S00580.comcsnf +++| SNF$     ENDIF
00582  M00S00581.comcsnf +++|          SA1    LLFG
00583  M00S00582.comcsnf +++|          ZR     X1,MER2     IF (M=S) .AND. *LLFG* IS FALSE
00584  M00S00583.comcsnf +++| MER5     READC  SCR1,WKST,WKSTL  CLEAR OUT REST OF LINE
00585  M00S00584.comcsnf +++|          MX7    -12
00586  M00S00585.comcsnf +++|          BX6    -X7*X4
00587  M00S00586.comcsnf +++|          NZ     X6,MER5     IF *EOL* NOT YET REACHED
00588  M00S00587.comcsnf +++|          EQ     MER2        PROCESS NEXT LINE
00589  M00S00588.comcsnf +++|
00590  M00S00589.comcsnf +++| MER6     SA3    LAST        LAST LINE NUMBER
00591  M00S00590.comcsnf +++|          IX0    X3-X5
00592  M00S00591.comcsnf +++|          NG     X0,MER12    IF M .GT. *LAST* S
00593  M00S00592.comcsnf +++|          SA1    LLFG
00594  M00S00593.comcsnf +++|          ZR     X1,MER8     IF LINE WAS NOT TOO LONG
00595  M00S00594.comcsnf +++| MER7     WRITEW SCR,WKST,WKSTL  TRANSFER LINE SO FAR
00596  M00S00595.comcsnf +++|          READC  SCR1,WKST,WKSTL
00597  M00S00596.comcsnf +++|          MX7    -12
00598  M00S00597.comcsnf +++|          BX6    -X7*X4
00599  M00S00598.comcsnf +++|          BX7    X4          REPLACE POSSIBLE FORCED *EOL* WORD
00600  M00S00599.comcsnf +++|          SA7    WKST+WKSTL-1
00601  M00S00600.comcsnf +++|          NZ     X6,MER7     IF NOT END OF LINE
00602  M00S00601.comcsnf +++| MER8     WRITEC SCR,WKST    TRANSFER LINE
00603  M00S00602.comcsnf +++|          EQ     MER2        PROCESS NEXT LINE
00604  M00S00603.comcsnf +++|
00605  M00S00604.comcsnf +++|*         MERGE LINE M.
00606  M00S00605.comcsnf +++|
00607  M00S00606.comcsnf +++| MER9     SB2    A0          BUFFER ADDRESS FOR MERGE FILE
00608  M00S00607.comcsnf +++|          BX0    X5
00609  M00S00608.comcsnf +++|          SA5    A5+B1       GET NEXT M
00610  M00S00609.comcsnf +++|          LX5    59-0        CHECK LINE DELETE FLAG (BIT 0)
00611  M00S00610.comcsnf +++|          ZR     X5,MER11    IF END OF LINE NUMBER TABLE
00612  M00S00611.comcsnf +++|          SA0    X5          BUFFER ADDRESS OF LINE M
00613  M00S00612.comcsnf +++|          MX7    1
00614  M00S00613.comcsnf +++|          PL     X5,MER10    IF NOT LINE DELETE
00615  M00S00614.comcsnf +++|          SA0    -B1
00616  M00S00615.comcsnf +++|          BX5    X7-X5
00617  M00S00616.comcsnf +++| MER10    AX5    18          NEXT M TO X5
00618  M00S00617.comcsnf +++|          BX2    X5-X0
00619  M00S00618.comcsnf +++|          ZR     X2,MER9     IF SAME, DELETE EARLIER M
00620  M00S00619.comcsnf +++|          NG     B2,MER4     IF DELETE LINE FLAG SET
00621  M00S00620.comcsnf +++|          BX0    X6
00622  M00S00621.comcsnf +++|          WRITEC SCR,B2      TRANSFER LINE M TO SCR
00623  M00S00622.comcsnf +++| SNF$     IF     DEF,SNF$
00624  M00S00623.comcsnf +++|          SA4    NLSF        INCREMENT NUMBER OF SORTED LINES
00625  M00S00624.comcsnf +++|          SX6    X4+B1
00626  M00S00625.comcsnf +++|          SA6    A4
00627  M00S00626.comcsnf +++| SNF$     ENDIF
00628  M00S00627.comcsnf +++|          BX6    X0
00629  M00S00628.comcsnf +++|          EQ     MER4        LOOP TO PROCESS NEXT M
00630  M00S00629.comcsnf +++|
00631  M00S00630.comcsnf +++|*         DUMP REST OF SCR1 TO SCR.
00632  M00S00631.comcsnf +++|
00633  M00S00632.comcsnf +++| MER11    NG     B2,MER12    IF NULL LINE
00634  M00S00633.comcsnf +++|          WRITEC SCR,B2      WRITE LAST LINE OF LINE NUMBER TABLE
00635  M00S00634.comcsnf +++| MER12    SA1    LLFG        CHECK LONG LINE FLAG
00636  M00S00635.comcsnf +++|          MX0    -12
00637  M00S00636.comcsnf +++|          ZR     X1,MER15    IF LONG LINE FLAG FALSE
00638  M00S00637.comcsnf +++|          EQ     MER14       TRANSFER THE FIRST SECTION OF LONG LINE
00639  M00S00638.comcsnf +++|
00640  M00S00639.comcsnf +++| MER13    BX7    -X0*X4
00641  M00S00640.comcsnf +++|          ZR     X7,MER15    IF LINE FIT INTO *WKST*
00642  M00S00641.comcsnf +++|          BX7    X4          REPLACE FORCED *EOL* WORD
00643  M00S00642.comcsnf +++|          SA7    WKST+WKSTL-1
00644  M00S00643.comcsnf +++| MER14    WRITEW SCR,WKST,WKSTL  TRANSFER THIS SECTION
00645  M00S00644.comcsnf +++|          EQ     MER16       READ NEXT SECTION OF LONG LINE
00646  M00S00645.comcsnf +++|
00647  M00S00646.comcsnf +++| MER15    WRITEC SCR,WKST    TRANSFER LINE OR LAST PART
00648  M00S00647.comcsnf +++| MER16    READC  SCR1,WKST,WKSTL
00649  M00S00648.comcsnf +++|          ZR     X1,MER13    IF NOT *EOR*
00650  M00S00649.comcsnf +++|
00651  M00S00650.comcsnf +++|*         DUMP REST OF LINE NUMBER TABLE TO SCR AND EXIT
00652  M00S00651.comcsnf +++|
00653  M00S00652.comcsnf +++| MER17    ZR     X5,MER20    IF END OF *LNT*
00654  M00S00653.comcsnf +++| MER18    SB7    A0
00655  M00S00654.comcsnf +++|          BX0    X5          CHECK MERGE
00656  M00S00655.comcsnf +++|          SA5    A5+B1       NEXT LINE FROM LINE NUMBER TABLE
00657  M00S00656.comcsnf +++|          LX5    59-0        CHECK LINE DELETE FLAG (BIT 0)
00658  M00S00657.comcsnf +++|          SA0    X5+
00659  M00S00658.comcsnf +++|          PL     X5,MER19    IF NO LINE DELETE
00660  M00S00659.comcsnf +++|          SA0    -1
00661  M00S00660.comcsnf +++|          MX7    1           REMOVE SIGN EXTENSION
00662  M00S00661.comcsnf +++|          BX5    X7-X5
00663  M00S00662.comcsnf +++| MER19    AX5    18          NEXT M TO X5
00664  M00S00663.comcsnf +++|          BX3    X5-X0
00665  M00S00664.comcsnf +++|          ZR     X3,MER17    IF SAME LINE NUMBERS
00666  M00S00665.comcsnf +++|          NG     B7,MER17    IF LINE DELETE
00667  M00S00666.comcsnf +++|          WRITEC SCR,B7      TRANSFER LINE M TO SCR
00668  M00S00667.comcsnf +++| SNF$     IF     DEF,SNF$
00669  M00S00668.comcsnf +++|          SA4    NLSF        INCREMENT NUMBER OF SORTED LINES
00670  M00S00669.comcsnf +++|          SX6    X4+B1
00671  M00S00670.comcsnf +++|          SA6    A4
00672  M00S00671.comcsnf +++| SNF$     ENDIF
00673  M00S00672.comcsnf +++|          EQ     MER17       DUMP NEXT LINE OF LINE NUMBER TABLE
00674  M00S00673.comcsnf +++|
00675  M00S00674.comcsnf +++|*         EXIT
00676  M00S00675.comcsnf +++|
00677  M00S00676.comcsnf +++| MER20    BX6    X0
00678  M00S00677.comcsnf +++|          SA3    LAST        LAST LINE NUMBER FROM PREVIOUS SEGMENT
00679  M00S00678.comcsnf +++|          IX4    X6-X3
00680  M00S00679.comcsnf +++|          NG     X4,MER      IF LAST LINE MERGED < *LAST*
00681  M00S00680.comcsnf +++|          SA6    A3+
00682  M00S00681.comcsnf +++|          EQ     MERX        RETURN
00683  M00S00682.comcsnf +++| ELK      SPACE  4,10
00684  M00S00683.comcsnf +++|          SPACE  4,10
00685  M00S00684.comcsnf +++|          BASE   *
00686  M00S00685.comcsnf +++| QUAL$    IF     -DEF,QUAL$
00687  M00S00686.comcsnf +++|          QUAL   *
00688  M00S00687.comcsnf +++| SNF      EQU    /COMCSNF/SNF
00689  M00S00688.comcsnf +++| QUAL$    ENDIF
00690  M00S00689.comcsnf +++|          ENDX
cdc/nos2.source/opl.opl871/common/comcsnf.txt ยท Last modified: by 127.0.0.1