*COMDECK  COMCUPC            UNPACK CONTROL CARD.                        COMCUPC
 UPC      CTEXT  COMCUPC - UNPACK CONTROL CARD.                          COMCUPC
 UPC      SPACE  4,10                                                    COMCUPC
          IF     -DEF,QUAL$,1                                            COMCUPC
          QUAL   COMCUPC                                                 COMCUPC
          BASE   D                                                       COMCUPC
*         COMMENT COPYRIGHT CONTROL DATA CORPORATION. 1970, 1978.        COMCUPC
 UPC      SPACE  4,10                                                    COMCUPC
***       UPC - UNPACK CONTROL CARD.                                     COMCUPC
*                                                                        COMCUPC
*         G. R. MANSFIELD.   70/12/12.                                   COMCUPC
*         P. C. TAM.         77/05/25.                                   COMCUPC
* 
*         ******************************************************* 
*         * THIS COMMON DECK IS PART OF THE COMMON COMMON DECKS * 
*         * RESIDING ON THE COMPASS PROGRAM LIBRARY, AND BEING  * 
*         * MAINTAINED BY THE COMPASS PROJECT.  ANY CHANGES     * 
*         * REQUIRED SHOULD BE DIRECTED TO THE COMPASS PROJECT  * 
*         * THROUGH THE PROPER PROCEDURE.                       * 
*         ******************************************************* 
* 
*                                                                        COMCUPC
*         UPC UNPACKS A CONTROL CARD TO INDIVIDUAL PARAMETERS.           COMCUPC
 UPC      SPACE  4,10                                                    COMCUPC
***       UPC UNPACKS A CONTROL CARD TO INDIVIDUAL PARAMETERS.           COMCUPC
*         THE FOLLOWING CONDITIONS ARE NOTED.                            COMCUPC
*         (1.)  IF (B7) IS NEGATIVE ON ENTRY, A BLANK AFTER THE KEYWORD  COMCUPC
*                IS A SEPARATOR, OTHERWISE BLANKS ARE IGNORED.           COMCUPC
*         (2.)  THE CHARACTERS +-/=,($ ARE CONSIDERED AS PARAMETER       COMCUPC
*                SEPARATORS.                                             COMCUPC
*         (3.)  THE CHARACTERS ). ARE CONSIDERED AS THE TERMINATION OF   COMCUPC
*                THE CONTROL CARD.                                       COMCUPC
*         (4.)  CHARACTERS WITH DISPLAY CODE VALUES 0, OR 60B - 77B      COMCUPC
*                ARE ILLEGAL BEFORE THE TERMINATOR.                      COMCUPC
*         (5.)  THE PARAMETER MUST CONTAIN 7 OR LESS CHARACTERS.         COMCUPC
*         (6.)  THE PARAMETERS ARE STORED LEFT JUSTIFIED WITH ZERO       COMCUPC
*                FILL.                                                   COMCUPC
*         (7.)  THE SEPARATOR CHARACTER WILL BE PLACED IN THE            COMCUPC
*                LOWER 18 BITS OF THE PARAMETER UNLESS IT IS A *,*       COMCUPC
*                IN WHICH CASE THE LOWER 18 BITS WILL BE ZERO            COMCUPC
*         (8.)  TWO SUCCESSIVE SEPARATORS OR A SEPARATOR FOLLOWED BY     COMCUPC
*                A TERMINATOR RESULTS IN A PARAMETER OF ALL ZERO.        COMCUPC
*                                                                        COMCUPC
*         ENTRY  (X5) = FIRST WORD OF CONTROL CARD.                      COMCUPC
*                (A5) = ADDRESS OF FIRST WORD.                           COMCUPC
*                (B7) = ADDRESS FOR FIRST PARAMETER IF (B7) IS POSITIVE  COMCUPC
*                       COMPLEMENT OF ADDRESS FOR FIRST PARAMETER IF     COMCUPC
*                       (B7) IS NEGATIVE.                                COMCUPC
*                (B1) = 1.                                               COMCUPC
*                                                                        COMCUPC
*         EXIT   (X6) = 0 IF NO ERROR DURING UNPACK.                     COMCUPC
*                (B6) = PARAMETER COUNT.                                 COMCUPC
*                                                                        COMCUPC
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.                             COMCUPC
*                B - 2, 3, 4, 5, 6.                                      COMCUPC
*                A - 1, 2, 5, 6, 7.                                      COMCUPC
*                                                                        COMCUPC
*         CALLS  NONE.                                                   COMCUPC
                                                                         COMCUPC
                                                                         COMCUPC
 UPC      SUBR               ENTRY/EXIT                                  COMCUPC
          SB2    B7                                                      COMCUPC
          PL     B2,UPC1     IF (B7) IS NEGATIVE ON ENTRY                COMCUPC
          SB2    -B7         IF NEGATIVE, RESET                          COMCUPC
 UPC1     SA6    B2          PRESET A6 FOR WRITE                         COMCUPC
          SX3    4100B       (X3) = MASK FOR TERMINATORS                 COMCUPC
          SB5    60          (B5) = CONSTANT 60                          COMCUPC
          MX0    -6          (X0) = CHARACTER MASK                       COMCUPC
          BX6    X6-X6       CLEAR ASSEMBLY                              COMCUPC
          SB2    B5          CLEAR CHARACTER COUNT                       COMCUPC
          MX2    18          (X2) = EXCESS CHARACTER MASK                COMCUPC
          MX4    1           (X4) = CHARACTER COUNTER                    COMCUPC
          SB6    B0          (B6) = ASSEMBLY INDEX                       COMCUPC
          EQ     UPC3        ENTER LOOP                                  COMCUPC
                                                                         COMCUPC
 UPC2     LX6    6           ADVANCE ASSEMBLY                            COMCUPC
          SB2    B2-6                                                    COMCUPC
          BX6    X6+X7                                                   COMCUPC
 UPC3     LX5    6           NEXT CHARACTER                              COMCUPC
          BX7    -X0*X5                                                  COMCUPC
          SB3    X7-1R9      CHECK CHARACTER                             COMCUPC
          LX4    6           ADVANCE DISASSEMBLY                         COMCUPC
          PL     X4,UPC4                                                 COMCUPC
                                                                         COMCUPC
*         00 CHARACTER IS ILLEGAL AND * IS ALPHANUMERIC.                 COMCUPC
                                                                         COMCUPC
          SA5    A5+B1                                                   COMCUPC
 UPC4     ZR     X7,UPC7     IF CHARACTER = 00                           COMCUPC
          LT     B3,B1,UPC2  IF ALPHA/NUMERIC                            COMCUPC
          SB4    X7-60B      CHARS. 60-77B ARE ILLEGAL
          GE     B4,UPC7
          SB4    X7-1R*                                                  COMCUPC
          ZR     B4,UPC2     IF CHARACTER = *                            COMCUPC
                                                                         COMCUPC
*         CHECK FOR BLANK AS SEPARATOR.                                  COMCUPC
                                                                         COMCUPC
          SB4    X7-1R       CHECK CHARACTER                             COMCUPC
          NZ     B4,UPC5     NOT BLANK, MUST BE SEPARATOR                COMCUPC
          PL     B7,UPC3     (B7) POSITIVE, BLANK IGNORED                COMCUPC
          NZ     B6,UPC3     NOT JUST AFTER KEYWORD, BLANK IGNORED       COMCUPC
          ZR     X6,UPC3     IF LEADING BLANK 
                                                                         COMCUPC
*         CHECK FOR PARAMETER .GT. 7 CHARACTERS.                         COMCUPC
                                                                         COMCUPC
 UPC5     BX1    X2*X6       CHECK ASSEMBLY                              COMCUPC
          LX6    X6,B2       LEFT JUSTIFY ASSEMBLY                       COMCUPC
          NZ     X1,UPC7     IF .GT. 7 CHARACTERS ASSEMBLED              COMCUPC
          AX1    X3,B3       CHECK FOR TERMINATOR                        COMCUPC
          EQ     B4,B1,UPC6  IF SEPARATOR = *,*                          COMCUPC
          BX6    X6+X7       INSERT SEPARATOR                            COMCUPC
 UPC6     SA6    A6                                                      COMCUPC
          SB2    B5          RESET ASSEMBLY                              COMCUPC
          BX6    X6-X6                                                   COMCUPC
          LX1    59                                                      COMCUPC
          SB6    B6+B1                                                   COMCUPC
          SA6    A6+B1       CLEAR LAST + 1                              COMCUPC
          PL     X1,UPC3     LOOP IF NOT TERMINATOR                      COMCUPC
          SA2    A6-B1       CLEAR TERMINATOR                            COMCUPC
          MX3    42                                                      COMCUPC
          BX7    X3*X2                                                   COMCUPC
          SA7    A2                                                      COMCUPC
          EQ     UPCX        RETURN                                      COMCUPC
                                                                         COMCUPC
 UPC7     SX6    B1          RETURN ERROR                                COMCUPC
          SB6    B0                                                      COMCUPC
          EQ     UPCX        RETURN                                      COMCUPC
 UPC      SPACE  4,10                                                    COMCUPC
          BASE   *                                                       COMCUPC
 QUAL$    IF     -DEF,QUAL$                                              COMCUPC
          QUAL   *                                                       COMCUPC
 UPC      EQU    /COMCUPC/UPC                                            COMCUPC
 UPC=     EQU    /COMCUPC/UPC 
 QUAL$    ENDIF                                                          COMCUPC
 UPC      ENDX                                                           COMCUPC
