*DECK TDCRACK 
          IDENT  TDCRACK
          SPACE  1
*** 
 TDCRACK  TITLE  TDCRACK - CRACK PARAMETERS FOR XCOMP, XMOVE, XPACK/PAND
*      FUNCTION 
**
*     TDCRACK CONVERTS THE PARAMETERS PASSED TO XPACK, XPAND, XCOMP 
*         TO MORE USABLE FORMATS AND STORES THE RESULTS IN CELLS
*         IN THE COMMON BLOCK T8.COM1. THE WORDS USED BY TDCRACK
*         ARE T.COB, T.XY, T.SRC1, T.SRC2, T.EXL1, T.EXL2, T.STAT,
*         T.S1 AND T.S2.  DESCRIPTIONS OF THESE WORDS FOLLOW--
* 
* 
*                T.COB IS SET NON-ZERO IF CALLING ROUTINE IS A COBOL
*                    ROUTINE. 
*                T.XY IS SET FOR XPACK, XPAND, XMOVE CALLS AS FOLLOWS 
*                     XX=0
*                     AA=1
*                     CC=2
*                     XA=3
*                     XC=4
*                     AX=5
*                     AC=6
*                     CX=7
*                     CA=8
*                     XAL=9 
*                     XCL=10
*                     XCOL=11 
*                     AP=12 
*                     PA=13 
*                T.XY IS SET FOR XCOMP CALLS AS FOLLOWS 
*                XX=0, AA=1, CC=2, XA=5, XC=7, AX=3, AC=8, CX=4, CA=6 
*                (X AND Y CHRS ARE TREATED AS IF REVERSED FOR XCOMP)
*                T.SRC1  HOLDS INFO FOR SOURCE-1
*                T.SRC2  HOLDS INFO FOR SOURCE-2
*                        HAS FORMAT --
*                            BITS 0-17 -- ADJUSTED SOURCE-1,-2 WRD PTR
*                                 18-35 -- BCP IN BITS (LT59) 
*                                          NUMBERED 0-59 FROM LEFT
*                                36-59 -- LENGTH*BITS PER CHR --
*                                          IN COBOL IF LENGTH WAS NOT 
*                                          SPECIFIED THIS FIELD WILL BE 
*                                          SMALLER CHR LEN OF THE 2 
*                                          FIELDS CONVERTED TO BITS 
*                                        -FOR 8-BIT CHR WORDS BIT LENGTH
*                                         DOES NOT INCLUDE THE EXTRA 4
*                                         UNUSED EXTRA LEFTMOST BITS
*                                         IN EACH WORD. 
*                                59 -- 0
*                T.EXL1  WILL BE 0 UNLESS CALLED FROM COBOL WITH LENGTH 
*                            UNSPECIFIED. THEN IT IS -- 
*                              LENGTH OF FIELD 1 - SMALLER OF 2 FIELDS
*                              IN CHR LEN --REPRESENTED IN BITS 
*                             BIT LENGTH DOES NOT INCLUDE UNUSED LEFT-
*                             MOST BITS FOR 8-BIT CHARACTER WORDS 
*                T.EXL2 - 0 UNLESS CALLED BY COBOL ROUTINE WITH 
*                         LENGTH UNSPECIFIED. THEN IT IS
*                           LENGTH OF FIELD2 - SMALLER OF 2 FIELDS (IN
*                           CHR LENGTH) -- REPRESENTED IN BITS. 
*                T.STAT - POINTER TO STATUS PARAMETER IF TDCRACK CALLED 
*                         BY XCOMP. 
*                T.S1     SIZE IN BITS OF CHR IN FIELD 1. 
*                T.S2     SIZE IN BITS OF CHR IN FIELD 2. 
* 
**
*     INPUT-OUTPUT   REGISTER STATUS--
*         INPUT-- B1=1
*                  A1=PTR TO PARAMETER STRING OF PTRS 
*                  B2= 0 FOR XPACK,-1 FOR XPAND, 1=XMOVE,2=XCOMP
*                  B6=RETURN ADDRESS
*         OUTPUT-- B1=1 
*                  ENTRIES DESCRIBED ABOVE ARE FILLED IN
*         ALL REGISTERS VOLATILE EXCEPT B1
          SPACE  1
          EJECT 
**
          SPACE  1
*CALL COM1
 TDCRACK  BSS    0           ENTRY
          SB1    1
          SA7    T.ENTRY
          ZR     X1,TDC.E1   NO PARAMETERS PASSED 
          LT     B2,B1,SKPXY BR IF CALLED BY XPACK OR XPAND (SKIP 
*                            PROCESSING OF XY PARAM 
          MX0    54          FORM BCP MASK
          SA2    X1          LOAD WRD CONTAINING XY PARAM 
          LX1    30          RT JUST BCP
          BX0    -X0*X1      PICK UP BCP
          LX1    54          RT JUST SIZE 
          SX7    X1          SIZE TO X7 
          ZR     X0,ZRBCP    BR IF 0 BCP ON XY PARAM
          IX1    X0+X7       SIZE+BCP 
          LX5    X0,B1       BCP*2
          SX1    X1-11       SZ+BCP-11
          LX6    X5,B1       BCP*4
          IX0    X5+X6       BCP*6 = BCP IN BITS
          PL     X1,TWOWDS   BR IF SZ+BCP GT 10 
          IX1    X7+X7       SIZE OF X4 PARAM * 2 
          LX6    X1,B1       SZ * 4 
          SB5    X0-60       BCP(IN BITS - 60)
          IX4    X1+X6       SIZE OF XY PARAM * 6 = SIZE IN BITS
          SB4    X4-1        SIZE-1 (IN BITS) 
          MX3    1
          SB5    -B5         60-BCP IN BITS 
          AX6    X3,B4       MASK (SIZE BITS LONG)
          SB7    X0          BCP IN BITS
          LX3    X6,B5       ALIGN MASK 
          BX5    X3*X2       MASK OFF PARAM XY
          LX2    X5,B7       LEFT JUSTIFY ITEM
 ZRBCP    BSS    0           X2 NOW CONTAINS XY PARAM LEFT JUSTIFIED
*                            X7=0 FOR FORTRAN-COMPASS, X7=SIZE IN 6-BIT 
*                                 BYTES FOR COBOL (OF XY-PARAM) 
          SA7    T.COB       COBOL FLAG 
          EQ     B2,B1,XMV   BR IF CALLED BY XMOVE
          LX2    6
          MX0    54 
          BX5    -X0*X2            CHR 1
          LX2    6
          BX1    -X0*X2            CHRS 
          SX0    55B               BLANK
          LX1    6
          BX5    X5+X1             CHR2(6-11),CHR1(0-5) 
          LX5    6
          IX2    X5+X0             CHR2,CHR1,SP 
          LX2    42           LEFT JUST INTERCHANGED CHRS 
          EQ     MATCH
 XMV      MX0    18          CALLED FROM XMOVE
          SX7    X7-3              SZ OF XY ITEM-3
          BX2    X0*X2       PICK UP 3 CHR
          ZR     X7,MATCH          BR IF XY ITEM SZ 3 
          MX0    6
          LX0    60-12
          BX0    X0*X2             3RD CR 
          NZ     X0,MATCH          BR IF 3RD CHR NON-ZERO 
          SX7    55B
          LX7    42 
          BX2    X7+X2       INSERT BLANK 3RD CHR 
 MATCH    BSS    0           LOOK FOR XY PARAMETER MATCH
          MX0    18 
          SB4    B0          INITIALIZE INDEX 
          SA5    XYPARAM     TABLE BASE 
          SB5    11 
 LOOPM    BX4    X0*X5       3 CHRS FROM TABLE ENTRY
          IX1    X2-X4       TEST FOR MATCH 
          SA5    A5+B1       LOAD NEXT ITEM FROM TABLE
          SB4    B4+B1       BUMP INDEX 
          ZR     X1,FDMTCH   BR IF FOUND MATCH
          NE     B4,B5,LOOPM BR IF TABLE NOT YET EXHAUSTED
          EQ     TDC.E2      TABLE EXHAUSTED -- NO MATCH
 SKPXY    BSS    0           CALLED FROM XPACK OR XPAND 
          MX0    42 
          SX6    12          CHR SZ IN UNPACK SOURCE (STRING-U) 
          BX7    X0*X1       PICK UP LFTMST 42 BITS IN PARAM DESCRIPTOR 
          SA6    T.S1        CHR SZ-FIELD 1 
          SA7    T.COB       0 IF NOT CALLED FROM COBOL 
          SX6    8           CHR SZ IN PACKED STRING
          SA1    A1-B1       A1 NOW PTS TO WORD BEFORE 1ST SOURCE ITEM
          SA6    T.S2        CHR SZ FIELD 2 
          EQ     SRCP 
 TWOWDS   BSS    0           XY PARAM SPILLS OVER WORD BOUNDARY (COBOL) 
*                            X1=SZ+BCP-11 
*                            X0=BCP IN BITS 
          MX3    1
          SB4    X0-1        BCP-1 (BITS) 
          SX1    X1+B1       NUM CHRS OF XY PARAM IN 2ND WRD
          AX4    B4,X3       FORM MASK 6*BCP BITS LONG
          SB4    B4+B1       BCP IN BITS
          BX5    -X4*X2      FIRST PART 
          IX0    X1+X1       NUM OF CHRS IN WRD 2 *2
          LX4    X0,B1       *4 
          IX1    X0+X4       *6 
          SB5    X1-1        NUM OF BITS IN WRD 2 - 1 
          MX3    1
          SA2    A2+B1       WRD 2 OF XY PARAM
          AX6    X3,B5       FORM MASK FOR WRD 2
          BX0    X6*X2       MASK CHRS IN WRD 2 
          IX5    X0+X5       COMBINE CHRS FROM WRDS 1 + 2 
          LX2    X5,B4       LEFT JUST ITEM 
          EQ     ZRBCP
XYCOMP    SA6    T.S1        SIZE OF CHR IN FIELD-1 
          SX7    X5 
          SA7    T.S2        SIZE OF CHR IN FIELD-2 
          EQ     SRCP 
 FDMTCH   SA5    A5-B1       RESTORE MATCH ENTRY TO X5
          SX7    B4-B1       RESET INDEX
          SX6    X5          SRC2 CHR SIZE IN BITS
          AX5    18          RT JUST SZ OF CHR IN FIELD 1 
          SA7    T.XY        X1 PARAMETER CODE
          GT     B2,B1,XYCOMP      BR IF CALL BY XCOMP
          SA6    T.S2        SIZE OF CHR IF FIELD 2 
          SX7    X5 
          SA7    T.S1        SZ OF CHR IN FIELD 1 
          EJECT 
* NOW PROCESS SOURCE-1 AND SOURCE-2 PARAMETERS
 SRCP     BSS    0
          SA1    A1+B1       SOURCE-1 PARAMETER PTR 
          SA2    A1+B1       SOURCE-2 PARAM PTR 
          ZR     X1,TDC.E3   NO SOURCE-1
          ZR     X2,TDC.E4   NO SOURCE-2
          SX7    B0 
          SX6    X1          PTR TO SOURCE-1
          SA7    T.POS1      INITIALIZE OFFSETS TO 0
          SA6    T.SRC1      SOURCE-1 PTR 
          SA7    T.POS2      OFFSET OF SOURCE-2 
          SX6    X2          PTR OT SOURCE-2
          SA6    T.SRC2 
          MX0    54 
          LX1    30          RT JSUT BCP OR SRCE-1
          BX6    -X0*X1      BCP SRCE-1 
          SA3    T.S1        SZ OF CHR FOR SRCE-1 
          LX2    30          RT JUST BCP SRCE-2 
          SA5    T.S2 
          SX3    X3-12       T.S1-12
          SB3    2
          BX7    -X0*X2      BCP SRCE-2 
          GE     B2,B1,NTPKPD  BR IF NOT CALLED BY XPACK OR XPAND 
          NZ     X7,TDC.E10 
 NTPKPD   BSS    0
          NZ     X3,NT12     BR IF T.S1 NOT 12
          AX6    1           CONVERT NUM OF 6-BIT BYTES  TO NUM OF
*                            12-BIT BYTES 
 NT12     SA4    A2+B1       LOAD PTR TO STATUS OR LENGTH 
          SX5    X5-12       T.S2-12
          SA6    T.POS1      OFFSET OF SRCE-1 IN CHRS 
          NZ     X5,NT12A    BR IF T.S2 NOT 12
          AX7    1
 NT12A    SA7    T.POS2      OFFSET OF SRCE-2 IN CHRS 
          LT     B2,B3,NTCMP BR IF NOT CALLED FROM XCOMP (SKIP STATUS)
          SX6    X4          PTR TO STATUS
          ZR     X4,TDC.E5   STATUS NOT SPECIFIED FOR XCOMP 
          MX3    42 
          BX4    X3*X4
          NZ     X4,TDC.E12 
          SA4    A4+B1       LOAD LENGTH PARAM PTR
          SA6    T.STAT      STATUS PTR 
          EJECT 
 NTCMP    SA3    T.COB       COBOL FLAG             PROCESS LENGTH
          NZ     X4,LGTH     BR IF LENGTH SPECIFIED 
          ZR     X3,TDC.E6   NOT COBOL
          LX1    9                 RT JUST CLASS-1
          MX0    57 
          BX7    -X0*X1 
          SX6    X7-2              TEST NUMERIC 
          MX0    42 
          NZ     X6,NOTNUM1        BR IF CLASS NOT NUMERIC
          MX0    51                SZ IS 9 BITS FIELD IF CLASS NUME9IC
 NOTNUM1  LX1    45                RT JUST SZ SRCE-1
          BX3    -X0*X1            ISOLATE SIZE-6 BIT BYTES IN SRC1 
          SA5    T.S1 
          LX2    9                 RT JUST CLASS-2
          MX0    57 
          BX7    -X0*X2            CLASS
          SX6    X7-2              TEST NUMERIC 
          MX0    42 
          NZ     X6,NOTNUM2        BR IF CLASS-2 NOT NUMERIC
          MX0    51 
 NOTNUM2  LX2    45                RT JUST SZ-2 
          BX6    -X0*X2            NUM OF 6-BIT BYTES IN SRC-2
          IX4    X3+X3       SRC-1 SZ IN 6 BIT BYTES *2 
          SX0    X5-12       T.S1-12
          LX7    X4,B1       *4 (SRCE-1)
          IX1    X7+X4       *6 (SRCE-1 SZ IN BITS) 
          NZ     X0,NT12B    BR IF T.S1 NOT 12
          MX0    59 
          BX7    -X0*X3 
          NZ     X7,TDC.E13  BR IF ODD NUM 6-BIT CHRS IN 12-BIT FIELDS
          AX3    1           CONVERT 6-BIT BYTES TO CHRS
 NT12B    SB3    X3          NUM CHRS IN SRCE-1   X5-T.S1,X1=BIT SZ 
          SA3    T.S2 
          IX7    X6+X6       *2 
          SX0    X3-12       T.S2-12
          LX4    X7,B1       *4 
          IX7    X4+X7     NUM BITS IN SRCE-2=X7
          NZ     X0,NT12C    BR IF T.S2 NOT 12
          MX0    59 
          BX4    -X0*X6 
          NZ     X4,TDC.E13 
          AX6    1           BYTES OT CHRS
 NT12C    SX0    X3-8        T.S2-0 
          NZ     X0,NT8      BR IF T.S2 NOT 8 
*                                  CONVERT NUM OF 6-BIT BYTES TO BITS, SUBT 
*                                  SUBTRACT 4 BITS PER WORD (BITS 56-59 
*                                  NOT USED) AND THEN CONVERT TO NUM OF 
*                                  8-BIT CHRS 
          BX4    X6                SIZE IN 6-BITS CHRS
          LX0    B1,X6
          LX0    B1,X6             *2 
          IX6    X4+X0             *3 
          LX6    1                 *6 = SIZE IN BITS
*                                  SUBTRACT 4 BITS FOR EVERY 60 OR PARTIAL 60 
          BX4    X6 
 AGAIN    SX4    X4-60             NUM OF IBTS DECREMENTED BY 60
          SX6    X6-4              REMOVE 4 BITS PER 60 (BITS 56-59 NOT 
*                                  USED)
          SX0    X4-1              NUM BITS LEFT-1
          PL     X0,AGAIN          BR IF MORE WORDS LEFT IN PARCKED SRC 
*                                  X6 NOW EQ ACTUAL SZ IN BITS EXCLUDING
*                                  BITS 56-59 IN EACH WORD
          AX6    3                 DIVIDE BY 8 = NUM OF 8 BIT CHRS
 NT8      SB4    X6          NUM CHRS IN SRCE-2   X3=T.S2  X7=BIT SIZE
          GE     B4,B3,SRC2BIG  BR IF SRCE-2 BIGGER 
*                            SRCE-2 SMALLER 
          PX5    X5          T.S1 
          PX6    X6          NUM CHRS IN SRCE-2 
          DX0    X5*X6       T.S1 * SZ OF SRCE-2 IN CHRS
          SA7    T.LEN2      SRCE-2 LENGTH IN BITS
          SX6    X0          EQUIVALENT BIT SZ FOR SRC-1
          IX7    X1-X6       CALC EXCESS BITS 
          SA6    T.LEN1      SRCE-1 LENGTH IN BITS
          SX6    B0 
          SA7    T.EXL1      EXCESS BITS
          SA6    T.EXL2 
          SA1    T.POS1 
          EQ     POSCB       GO CONVERT POS1-2 TO BITS T.S1=X5,T.S2=X3
 SRC2BIG  BSS    0           SRC-1 IS SMALLER 
          SX6    B3          NUM CHRS IN SRC-1
          PX4    X3           T.S2
          PX6    X6 
          DX0    X6*X4       T.S2*NUM CHRS IN SRC-1 
          SX6    X1          BIT LEN SRC-1
          SA6    T.LEN1 
          SX0    X0 
          IX6    X7-X0       CALC SRC-2 EXCESS
          SA7    T.LEN2 
          SA6    T.EXL2 
          SX7    B0 
          SA1    T.POS1 
          SA7    T.EXL1 
 POSCB    BSS    0           CONVERT POS,-2 TO BITS 
          PX1    X1          X3=T.S2, X5=T.S1, X1=POS1
          SA2    T.POS2 
          PX5    X5 
          DX0    X1*X5       POS1*T.S1 = OFFSET IN BITS (SRC1)
          PX3    X3          T.S2 
          SX6    X0 
          PX2    X2          POS2 
          DX0    X2*X3       POS2*T.S2 = OFFSET IN BITS (SRC2)
          SA6    A1          POS1 
          SX7    X0 
          SA7    A2          POS2 
          EQ     WRAPUP 
 LGTH     BSS    0           LENGTH PARAM IS SPECIFIED
          SA5    T.COB
          ZR     X5,LNNTCB         BR IF NOT COBOL
          MX0    57 
          LX4    42                RT JUST USAGE ON LEN PARAM 
          BX0    -X0*X4            USAGE ISOLATED 
          LX4    18                REALIGN X4 
          SX0    X0-4              TEST FOR COMP-1
          NZ     X0,TDC.E9         ELLEGAL LENGTH PARAM--NOT COMP-1 
 LNNTCB   BSS    0
          SA5    T.S1        SIZE OR SRC1 CHR IN BITS 
          SA1    X4          LENGTH IN CHRS 
          SA3    T.S2 
          PX5    X5          T.S1 
          PX1    X1          LENGTH 
          DX6    X5*X1       T.S1*LENGTH
          PX3    X3          T.S2 
          SA6    T.LEN1 
          SX7    B0 
          DX6    X3*X1       T.S2*LENGTH
          SA7    T.EXL1      EXCESS=0 
          SA4    A4+B1       POS-1 PTR
          SA6    T.LEN2 
          SA7    T.EXL2 
          SA1    T.POS1 
          ZR     X4,POSCB    BR IF NO POS-1 PARAMETER 
          SA2    X4          POS-1
          MX0    42 
          BX4    X0*X4
          ZR     X4,NOPICK   BR IF CALLED BY FORTRAN ROUTINES 
          MX0    57 
          LX4    42          RT JUST USAGE
          BX0    -X0*X4      USAGE
          SX4    X0-4        CK FOR COMP-1
          NZ     X4,TDC.E11 
 NOPICK   BSS    0
          SX2    X2-1        POS1-1 
          PX1    X1          OLD POS1 
          SA4    A4+B1       POS-2 PTR
          PX2    X2          POS1 
          FX1    X1+X2       NEW OFFSET IN CHRS 
          DX6    X1*X5       OFFS SRC-1 * T.S1 = OFFSET IN BITS 
          ZR     X4,NOPOS2   BR IF POS-2 NTO SPECIFIED
          LT     B2,B1,TDC.E7      XPACK OR XPAND, TOO MANY PARAMS
          BX7    X4          POS-2 PTR
          MX0    42 
          BX7    X0*X7
          ZR     X7,NOPICK2  BR IF CALLED BY FORTRAN
          MX0    57 
          LX7    42          RT JUST USAGE
          BX0    -X0*X7      USAGE
          SX7    X0-4 
          NZ     X7,TDC.E11  BR IF POS-2 NOT COMP-1 
 NOPICK2  BSS    0
          SA4    X4          POS-2 VLAUE
          SX4    X4-1        POS2-1 
 NOPOS2   SX7    X6-60       OFFSET SRC1 -60
          BX1    X4+X2        OFFSETS OR-D
          NG     X1,TDC.E8         BAD OFFSET 
          NG     X7,OFF10K   BR IF OFFSET OF SRCE1 LT 1 WORD
          SA1    ONESXY      1/60 
          FX5    X1*X6       1/60*OFFSET1 = WRD OFFSET
          DX6    X1*X6       REMAINDER
          SA1    T.SRC1 
          SX2    60 
          SB5    X5          WRD OFFSET 
          PX2    X2 
          SX7    X1+B5       UPDATE ADDRESS 
          FX5    X6*X2       10 * .REMAINDER
          SA7    A1          T.SRC1 
          SX6    X5          NEW OFFSET 
 OFF10K   SA6    T.POS1      UPDATE BCP IN BITS 
          SA5    T.POS2      OLD POS2 
          PX4    X4          PARAM POS2 
          PX5    X5          OLD POS2 
          PX3    X3          T.S2 
          FX1    X4+X5       NE OFFSET IN CHRS
          DX6    X1*X3       OFFSET IN BITS 
          SX7    X6-60
          NG     X7,OFF2OK   BR IF OFFSET LESS THAN 1WRD
          SA1    ONESXY      1/60 
          FX5    X1*X6       WORD OFFSET
          DX6    X1*X6       REMAINDER
          SA1    T.SRC2 
          SX2    60 
          SB5    X5 
          PX2    X2 
          SX7    X1+B5       NEW WORD ADDR
          FX5    X6*X2       REMAINDER * 10 -- NEXT CHR 
          SA7    A1          T.SRC2 
          SX6    X5          NEW OFFSET 
 OFF2OK   SX6    X6 
          SA6    T.POS2      UPDATED BCP IN BITS
 WRAPUP   BSS    0
* ASSEMBLE T.SRC1 + T.SRC2 IN FINAL FORMAT
          SA2    T.POS1 
          SA1    T.SRC1 
          SX4    X2          SRC1 OFFSET -- BITS
          SX3    X1          SRC1 WRD ADDR
          LX4    18          ALIGN OFFSET 
          MX0    60-23
          SA1    T.LEN1 
          IX5    X3+X4       OFFSET(18-35), ADDR(0-17)
          SA2    T.POS2 
          BX6    -X0*X1      LENGTH 
          SA4    T.SRC2 
          LX6    36 
          IX7    X6+X5       LEN(36-59),OFFSET (18-35),ADDR(0-17) 
          LX2    18          ALIGN BCP
          SA3    T.LEN2 
          IX5    X2+X4       OFFSET(18-35),ADDR(0-17) 
          SA7    T.SRC1 
          BX6    -X0*X3      LENGTH 
          LX6    36          ALIGN LENGTH 
          IX7    X6+X5       LEN(36-59), OFFSET(18-35),ADDR(0-17) 
          SA7    T.SRC2 
          JP     B6 
          SPACE  2
* 
**    ERROR ACTIONS 
* 
 TDC.E1   SA2    TDC.M1 
          EQ     ERR.CON
 TDC.E2   SA2    TDC.M2 
          EQ     ERR.CON
 TDC.E3   SA2    TDC.M3 
          EQ     ERR.CON
 TDC.E4   SA2    TDC.M4 
          EQ     ERR.CON
TDC.E5    SA2    TDC.M5 
          EQ     ERR.CON
 TDC.E6   SA2    TDC.M6 
          EQ     ERR.CON
TDC.E7    SA2    TDC.M7 
          EQ     ERR.CON
 TDC.E8   SA2    TDC.M8 
          EQ     ERR.CON
 TDC.E9   SA2    TDC.M9 
          EQ     ERR.CON
 TDC.E10  SA2    TDC.M10
          EQ     ERR.CON
 TDC.E11  SA2    TDC.M11
          EQ     ERR.CON
 TDC.E12  SA2    TDC.M12
          EQ     ERR.CON
 TDC.E13  SA2    TDC.M13
          EQ     ERR.CON
* 
****
 TDC.M1   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/NO PARAMETERS/
 TDC.M2   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/UNRECOGNIZED MOVE-COMPARE TYPE/ 
 TDC.M3   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/MISSING SOURCE-1 PARAMETER/ 
 TDC.M4   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/MISSING SOURCE-2 OR DESTINATION PARAMETER/
 TDC.M5   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/NO STATUS PARAMETER/
 TDC.M6   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/MISSING LENGTH PARAMETER/ 
 TDC.M7   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/TOO MANY PARAMETERS/ 
 TDC.M8   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/BAD OFFSET IN PARAMETER DESCRIPTOR/
 TDC.M9   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/ILLEGAL LENGTH PARAMETER DESCRIPTION/
 TDC.M10  VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/STRING-P MUST BE WORD ALIGNED/ 
 TDC.M11  VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/POSITION PARAMETERS MUST BE COMP-1/
 TDC.M12  VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/STATUS PARAMETER MUST BE COMP-2/ 
 TDC.M13  VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA   C/BAD PICTURE LENGTH ON SOURCE ITEM/ 
* 
****
          EJECT 
**
          SPACE 2 
* 
* MOVE/COMPARE TYPE TABLE 
* 
*  FORMAT OF VFD -- 18/3HXY ,6/0,18/SRC1 SZ,18/SRC2 SZ
 XYPARAM  BSS    0
 XX       VFD    18/3HXX ,6/0,18/6,18/6 
 AA       VFD    18/3HAA ,6/0,18/12,18/12 
 CC       VFD    18/3HCC ,6/0,18/12,18/12 
 XA       VFD    18/3HXA ,6/0,18/6,18/12
 XC       VFD    18/3HXC ,6/0,18/6,18/12
 AX       VFD    18/3HAX ,6/0,18/12,18/6
 AC       VFD    18/3HAC ,6/0,18/12,18/12 
 CX       VFD    18/3HCX ,6/0,18/12,18/6
CA        VFD    18/3HCA ,6/0,18/12,18/12 
 XAL      VFD    18/3HXAL,6/0,18/6,18/12
 XCL      VFD    18/3HXCL,6/0,18/6,18/12
* 
          SPACE  2
* 
 ONESXY   DATA   .01666666666667P48        ONE-SIXTIETH 
****
*     METHODS 
*        1. 
*         FOR FORTRAN CALLED ROUTINES PARAMETER CRACKING IS STRAIGHT- 
*         FORWARD. A1 POINTS TO THE PARAMETER LIST. THE PARAMETER 
*         LIST CONSISTS OF POINTERS TO THE ACTUAL PARAMETERS, IN ORDER
*         OF APPEARANCE IN THE FORTRAN PROGRAM. A ZERO IN THE PARAMETER 
*         POINTER LIST TERMINATES THE LIST. 
* 
*        2. IF B2=1 OR 2 (TDCRACK CALLED BY XMOVE OR XCOMP), THE
*         FIRST PARAMETER IS PROCESSED AS THE "XY" PARAMETER. 
*         THE XYPARAM TABLE IS SEARCHED FOR A MATCH AND T.XY
*         THEN PROPERLY SET. THE CHARACTER SIZES OF THE 2 SOURCE
*          FIELDS IS RETRIEVED FROM THE XYPARAM TABLE ALSO
*          AND STORED IN T.S1 AND T.S2. 
* 
*         3. IF B2 IS 0 OR -1 TDCRACK WAS CALLED BY XPACK OR XPAND
*          AND XY PARAMETER PROCESSING IS SKIPPED. T.S1 IS SET TO 12
*          AND T.S2 TO 8. 
* 
*         4. NEXT THE 2 SOURCE PARAMETERS ARE PROCESSED. POINTERS TO
*          THE SOURCE WORDS ARE SAVED IN T.SRC1 AND T.SRC2. T.POS1
*          AND T.POS2 ARE INITIALIZED TO THE BCP (BEGINNING CHR 
*          POSITION) OF THE CORRESPONDING SOURCE FIELD (ALWAYS ZERO 
*          FOR FORTRAN).THE ACTUAL BCP IN 6-BIT CHRS IS CONVERTED 
*          TO 12-BIT CHRS FOR 12-BIT SOURCE FIELDS. 
* 
*         5. FOR XCOMP THE STATUS POINTER IS NOW SAVED IN T.STAT. 
* 
*         6. LENGTH IS THEN PROCESSED IF SPECIFIED. THE ACTUAL SIZES
*          IN CHRS OF THE 2 SOURCE FIELDS IS DETERMINED. IF EQUAL 
*          THE T.EXL1 AND T.EXL2 PARAMETERS ARE SET TO 0. 
*          IF NOT, THE EX CELL FOR THE SMALLER FIELD IS SET TO ZERO.
*          THE SMALLER CHR LENGTH IS MULTIPLIED BY THE CHR SIZE 
*          IN THE BIGGER (IN CHRS) FIELD AND SUBTRACTED FROM THE
*          BIT LENGTH OF THAT FIELD GIVING T.EXL FOR THAT FIELD.
*          FIELD LENGTHS ARE CONVERTED TO BITS AND SAVED IN T.LEN1
*          AND T.LEN2.
* 
* 
*         7. OFFSETS, IF SPECIFIED, ARE CONVERTED TO BITS AND ADDED 
*          TO T.POS1 AND T.POS2. THESE RESULTS ARE MULTIPLIED BY
*          1/60 WITH THE INTEGER PORTION ADDED TO T.SRC1 AND T.SRC2 
*          AND THE REMAINDERS REPLACING T.POS1 AND T.POS2. (FOR 
*          XPACK AND XPAND THE 2ND OFFSET IS NEVER PROCESSED.)
* 
*         8. T.SRC1 AND T.SRC2 ARE REFORMED INTO FINAL FORMAT FROM
*          T.SRC1, T.SRC2, T.POS1, T.POS2, T.LEN1 AND T.LEN2. 
* 
*         9. NOTE THAT THE COBOL PARAMETER LIST IS MORE COMPLICATED 
*          THAN THE FORTRAN LIST, SOMETIMES CAUSING EXTRA PROCESSING. 
*          FOR A DESCRIPTION OF THE COBOL PARAMETER LIST SEE APPENDIX 
*          E PAGE 1 OF THE COBOL REFERENCE MANUAL. THE TWO DESCRIP- 
*          TIONS OF MOST INTEREST ARE NON-NUMERIC ITEM-NAME AND 
*          NUMERIC ITEM-NAME. IN PARTICULAR, TDCRACK REFERS TO THE
*          SIZE, BCP, CLASS, USAGE AND ADDRESS FIELDS.
****
          END 
