Common COMPUPS

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.compups +++|          CTEXT  COMPUPS - UNPACK STATEMENT.
00002  M00S00002.compups +++| UPS      SPACE  4
00003  M00S00003.compups +++|          IF     -DEF,QUAL$,1
00004  M00S00004.compups +++|          QUAL   COMPUPS
Line S00005 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00005  M01S00005.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00007  M00S00006.compups +++| UPS      SPACE  4
00008  M00S00007.compups +++|***       UPS - UNPACK STATEMENT.
00009  M00S00008.compups +++|*         G. R. MANSFIELD.   70/10/18.
00010  M00S00009.compups +++|*         D. A. HIVELEY.     73/12/07.
00011  M00S00010.compups +++|*         R. A. LARSEN.      76/05/20.
00012  M00S00011.compups +++| UPS      SPACE  4
00013  M00S00012.compups +++|***              UPS UNPACKS A STATEMENT FROM A WORD BUFFER TO A
00014  M00S00013.compups +++|*         CHARACTER BUFFER.
00015  M00S00014.compups +++|*
00016  M00S00015.compups +++|*         CHARACTER PROCESSING WITHOUT LITERALS -
00017  M00S00016.compups +++|*                IMBEDDED SPACES ARE DELETED.
00018  M00S00017.compups +++|*                THE STRING TERMINATES WITH A BYTE OF 0000.
00019  M00S00018.compups +++|*                THE TERMINATION CONDITION IS A *.* OR *)*.
00020  M00S00019.compups +++|*
00021  M00S00020.compups +++|*         CHARACTER PROCESSING WITH LITERALS -
00022  M00S00021.compups +++|*                LITERALS ARE DELIMITED BY A *$*.
00023  M00S00022.compups +++|*                A *$$* IS VALID WITHIN A LITERAL AND IS NOT CONSIDERED
00024  M00S00023.compups +++|*                A DELIMITER.
00025  M00S00024.compups +++|*                A *.*, *)*, OR * * WITHIN A LITERAL HAS NO SPECIAL
00026  M00S00025.compups +++|*                MEANING.
00027  M00S00026.compups +++|*                OUTSIDE THE LITERAL IMBEDDED SPACES ARE DELETED.
00028  M00S00027.compups +++|*                THE STRING TERMINATES WITH A BYTE OF 0000.
00029  M00S00028.compups +++|*
00030  M00S00029.compups +++|*         ERROR CONDITIONS -
00031  M00S00030.compups +++|*                NO TERMINATOR FOUND.
00032  M00S00031.compups +++|*                BYTE VALUE = 0 (DOUBLE COLON).
00033  M00S00032.compups +++|*                UNDELIMITED LITERAL.
00034  M00S00033.compups +++|*
00035  M00S00034.compups +++|*         ENTRY  (STMT - STMT+N) = STATEMENT TERMINATED WITH A 0 WORD.
00036  M00S00035.compups +++|*
00037  M00S00036.compups +++|*         EXIT   (A) = 0, IF N0 ERROR FOUND.
00038  M00S00037.compups +++|*                (T1) = ADDRESS OF LAST BYTE GOTTEN FROM (STMT).
00039  M00S00038.compups +++|*                (T2) = ADDRESS OF LAST CHARACTER STORED IN (CHAR).
00040  M00S00039.compups +++|*                (T3) = CHARACTER POSITION INDICATOR
00041  M00S00040.compups +++|*                       (1 = UPPER, 0 = LOWER).
00042  M00S00041.compups +++|*                (CHAR - CHAR+N) = UNPACKED STATEMENT.
00043  M00S00042.compups +++|*
00044  M00S00043.compups +++|*         USES   T1 - T3.
00045  M00S00044.compups +++|*
00046  M00S00045.compups +++|*         CALLS  GNC.
00047  M00S00046.compups +++|
00048  M00S00047.compups +++|
00049  M00S00048.compups +++| UPS      SUBR               ENTRY/EXIT
00050  M00S00049.compups +++|          LDN    0           CLEAR CHARACTER POSITION INDICATOR
00051  M00S00050.compups +++|          STD    T3
00052  M00S00051.compups +++|          LDC    STMT-1      SET STATEMENT ADDRESS
00053  M00S00052.compups +++|          STD    T1
00054  M00S00053.compups +++|          LDC    CHAR        SET CHARACTER ADDRESS
00055  M00S00054.compups +++|          STD    T2
00056  M00S00055.compups +++|
00057  M00S00056.compups +++|*         CHECK FIRST CHARACTER, DELETING IMBEDDED BLANKS.
00058  M00S00057.compups +++|
00059  M00S00058.compups +++| UPS1     RJM    GNC         GET NEXT CHARACTER
00060  M00S00059.compups +++|          ZJN    UPS7        IF COLON
00061  M00S00060.compups +++|          SBN    1R$
00062  M00S00061.compups +++|          ZJN    UPS8        IF *$*
00063  M00S00062.compups +++|          SBN    1R -1R$
00064  M00S00063.compups +++|          ZJN    UPS1        IF BLANK
00065  M00S00064.compups +++|          ADN    -1RZ-1+1R
00066  M00S00065.compups +++|          MJN    UPS8        IF ALPHABETIC
00067  M00S00066.compups +++|          SBN    1R9+1-1RZ-1
00068  M00S00067.compups +++|          PJN    UPS7        IF NON-NUMERIC
00069  M00S00068.compups +++|
00070  M00S00069.compups +++|*         SKIP SEQUENCE NUMBER, DELETING IMBEDDED BLANKS.
00071  M00S00070.compups +++|
00072  M00S00071.compups +++| UPS2     AOD    T2          ADVANCE CHARACTER ADDRESS
00073  M00S00072.compups +++| UPS3     RJM    GNC         GET NEXT CHARACTER
00074  M00S00073.compups +++|          ZJN    UPS5        IF COLON
00075  M00S00074.compups +++|          SBN    1R9+1
00076  M00S00075.compups +++|          MJN    UPS2        IF ALPHANUMERIC
00077  M00S00076.compups +++|          SBN    1R)-1R9-1
00078  M00S00077.compups +++|          ZJN    UPS4        IF *)*
00079  M00S00078.compups +++|          SBN    1R -1R)
00080  M00S00079.compups +++|          ZJN    UPS3        IF BLANK
00081  M00S00080.compups +++|          SBN    1R.-1R
00082  M00S00081.compups +++|          NJN    UPS5        IF NOT *.*
00083  M00S00082.compups +++| UPS4     STI    T2          TERMINATE BUFFER
00084  M00S00083.compups +++|          LJM    UPSX        RETURN
00085  M00S00084.compups +++|
00086  M00S00085.compups +++|*         CHECK FIRST CHARACTER AFTER SEQUENCE NUMBER TERMINATOR.
00087  M00S00086.compups +++|
00088  M00S00087.compups +++| UPS5     AOD    T2          ADVANCE CHARACTER ADDRESS
00089  M00S00088.compups +++| UPS6     RJM    GNC         GET NEXT CHARACTER
00090  M00S00089.compups +++|          LMN    1R
00091  M00S00090.compups +++|          ZJN    UPS6        IF BLANK
00092  M00S00091.compups +++|          LMN    1R$&1R
00093  M00S00092.compups +++|          ZJN    UPS8        IF *$*
00094  M00S00093.compups +++| UPS7     LDI    T2          GET CURRENT CHARACTER
00095  M00S00094.compups +++|          UJN    UPS10       SEARCH FOR TERMINATOR
00096  M00S00095.compups +++|
00097  M00S00096.compups +++|*         SEARCH FOR TERMINATOR, DELETING IMBEDDED BLANKS.
00098  M00S00097.compups +++|
00099  M00S00098.compups +++| UPS8     AOD    T2          ADVANCE CHARACTER ADDRESS
00100  M00S00099.compups +++| UPS9     RJM    GNC         GET NEXT CHARACTER
00101  M00S00100.compups +++| UPS10    LMN    1R
00102  M00S00101.compups +++|          ZJN    UPS9        IF BLANK
00103  M00S00102.compups +++|          LMN    1R.&1R
00104  M00S00103.compups +++|          ZJN    UPS4        IF *.*
00105  M00S00104.compups +++|          LMN    1R)&1R.
00106  M00S00105.compups +++|          ZJN    UPS4        IF *)*
00107  M00S00106.compups +++|          LMN    1R$&1R)
00108  M00S00107.compups +++|          NJN    UPS8        IF NOT *$*
00109  M00S00108.compups +++|
00110  M00S00109.compups +++|*         PROCESS LITERAL CHARACTER STRING.
00111  M00S00110.compups +++|
00112  M00S00111.compups +++| UPS11    AOD    T2          ADVANCE CHARACTER ADDRESS
00113  M00S00112.compups +++|          RJM    GNC         GET NEXT CHARACTER
00114  M00S00113.compups +++|          LMN    1R$
00115  M00S00114.compups +++|          NJN    UPS11       IF NOT *$*
00116  M00S00115.compups +++|          AOD    T2          ADVANCE CHARACTER ADDRESS
00117  M00S00116.compups +++|          RJM    GNC         GET NEXT CHARACTER
00118  M00S00117.compups +++|          LMN    1R$
00119  M00S00118.compups +++|          ZJN    UPS11       IF *$$*
00120  M00S00119.compups +++|          UJN    UPS7        END OF LITERAL STRING
00121  M00S00120.compups +++| GNC      SPACE  4,15
00122  M00S00121.compups +++|**        GNC - GET NEXT CHARACTER.
00123  M00S00122.compups +++|*
00124  M00S00123.compups +++|*         ENTRY  (T1) = ADDRESS OF NEXT BYTE OF CONTROL CARD - 1.
00125  M00S00124.compups +++|*                (T2) = ADDRESS TO STORE NEXT CHARACTER.
00126  M00S00125.compups +++|*                (T3) = NEXT CHARACTER INDICATOR.
00127  M00S00126.compups +++|*
00128  M00S00127.compups +++|*         EXIT   (A) = NEXT CHARACTER.
00129  M00S00128.compups +++|*                (T1) ADVANCED IF NEW BYTE NEEDED.
00130  M00S00129.compups +++|*                ((T2)) = NEXT CHARACTER.
00131  M00S00130.compups +++|*                (T3) = TOGGLED TO INDICATE NEXT CHARACTER.
00132  M00S00131.compups +++|*                TO *UPSX* IF ERROR ENCOUNTERED.
00133  M00S00132.compups +++|*
00134  M00S00133.compups +++|*         USES   T1, T2, T3.
00135  M00S00134.compups +++|
00136  M00S00135.compups +++|
00137  M00S00136.compups +++| GNC2     SHN    -6          POSITION UPPER CHARACTER
00138  M00S00137.compups +++|          UJN    GNC4        STORE CHARACTER
00139  M00S00138.compups +++|
00140  M00S00139.compups +++| GNC3     LDI    T1          GET LOWER CHARACTER
00141  M00S00140.compups +++|          LPN    77
00142  M00S00141.compups +++| GNC4     STI    T2          STORE CHARACTER
00143  M00S00142.compups +++|
00144  M00S00143.compups +++| GNC      SUBR               ENTRY/EXIT
00145  M00S00144.compups +++|          LDD    T3          DETERMINE UPPER/LOWER CHARACTER
00146  M00S00145.compups +++|          LMN    1
00147  M00S00146.compups +++|          STD    T3
00148  M00S00147.compups +++|          ZJN    GNC3        IF LOWER CHARACER
00149  M00S00148.compups +++|          AOD    T1          ADVANCE STATEMENT ADDRESS
00150  M00S00149.compups +++|          LMC    STMT+9D*5
00151  M00S00150.compups +++|          ZJN    GNC1        IF END OF STATEMENT
00152  M00S00151.compups +++|          LDI    T1          GET NEXT WORD OF STATEMENT
00153  M00S00152.compups +++|          NJN    GNC2        IF NOT DOUBLE COLON OR END OF STATEMENT
00154  M00S00153.compups +++| GNC1     STI    T2          TERMINATE STRING BUFFER
00155  M00S00154.compups +++|          LDN    1           INDICATE ERROR
00156  M00S00155.compups +++|          LJM    UPSX        RETURN
00157  M00S00156.compups +++|          SPACE  4
00158  M00S00157.compups +++| QUAL$    IF     -DEF,QUAL$
00159  M00S00158.compups +++|          QUAL   *
00160  M00S00159.compups +++| UPS      EQU    /COMPUPS/UPS
00161  M00S00160.compups +++| QUAL$    ENDIF
00162  M00S00161.compups +++|          ENDX