*DECK TESTT 
          IDENT  T8.TSTT
          TITLE  ROUTINES TESTT, FTPTR
 TESTT    TITLE  TEST IBM CODE SOURCE FIELDS                            037950
*                                                                       037960
*     TESTT - TEST IBM SOURCE CODE FIELDS 
*                                                                       037980
*         THIS CODE IS USED TO PERFORM SELECTION TESTING WHEN THE       037990
*        SOURCE RECORD IS IN IBM(TAPE) CODE                             038000
*                                                                       038010
*         INPUT  -  B1 = 1                                              038020
*                   B6 = RETURN ADDRESS                                 038030
*                                                                       038040
*                T.INREC     POINTER TO CURRENT POSITION IN SOURCE      038050
*                T.RECORD    POINTER TO START OF SOURCE                 038060
*                T.COND      CONDITION CODE FOR RELATIONAL              038070
*                                                                       038080
*                   OTHER  T.- CELLS AS DEFINED IN THE PARSE ROUTINE    038090
*                                                                       038100
*         OUTPUT -  X0 = RETURN CODE, 0=TRUE, NOT 0 = FALSE             038110
*                                                                       038120
*         PRESERVED  --, --, --, --, --, --, --, --                     038130
*                    A0, --, --, --, --, --, --, --                     038140
*                        B1, --, --, --, --, B6, --                     038150
*                                                                       038160
*CALL COM2
          SPACE  4                                                      038180
*                                                                       038190
* JUMP VECTOR FOR TESTING IBM CODE                                      038200
*                                                                       038210
 TESTT    LETMASK R,(BEFGHLPSWX)    LEGAL T1 TYPES                      038220
          J      *                                                      038230
          ECHO   1,P=(X,W,S,P,L,H,G,F,E,B)                              038240
          J      TESTT._P                                               038250
*                                                                       038260
          ECHO   4,U=(X,W,S,P,L,H,G,F,E,B)
 TESTT._U  LETMASK R,(BEFGHLPSWX01)    LEGAL T2 TYPES                   038280
          J      *
          ECHO   1,Q=(1,0,X,W,S,P,L,H,G,F,E,B)                          038290
          J      TESTT._U_Q                                             038300
*                                                                       038310
* THE CODE TO DO THE TESTS FOLLOWS                                      038320
*                                                                       038330
          SPACE  4                                                      038340
*                                                                       038350
* THE FOLLOWING ENTRIES ARE FOR SAME-TYPE STRING COMPARES               038360
*                                                                       038370
*                                                                       038380
 TESTT.XX SB7    TSTT.1      X-X                                        038390
          EQ     FTXVXV 
 TSTT.1   SB7    TSTT.2                                                 038410
          EQ     COMBIT      COMPARE TO SHORTER LENGTH                  038420
 TSTT.2   SB7    B6                                                     038430
          SB6    TSTT.3                                                 038440
          BX2    X0          SAVE X0
          EQ     TXTEST      GET CHAR-SET INDICATOR                     038450
 TSTT.3   SB6    B7                                                     038460
          BX0    X2          RESTORE X0 
          SX2    8           CHARACTER SIZE                             038470
          SX5    SPACE.C     EBCDIC SPACE                               038480
          ZR     B4,TST.CS   (COMMON CODE)                              038490
          SX5    SPACE.A     ASCII SPACE                                038500
          EQ     TST.CS                                                 038510
*                                                                       038520
          SPACE  2                                                      038530
*                                                                       038540
 TESTT.BB SB7    TST.BB      B-B                                        038550
          EQ     FTBVBV 
*                                                                       038570
          SPACE  2                                                      038580
*                                                                       038590
* THE FOLLOWING ENTRIES ARE FOR MIXED-TYPE STRING COMPARES              038600
*                                                                       038610
*                                                                       038620
 TESTT.BX SB7    TSTT.6      B-X                                        038630
          EQ     FTBVXV 
 TSTT.6   SX6    B1                                                     038650
          SB7    B6                                                     038660
          SA6    T.M1                                                   038670
          SB6    TSTT.7                                                 038680
          EQ     TXTEST      TEST CHAR SET FLAG                         038690
 TSTT.7   SX6    8           BITS PER CHARACTER                         038700
          SX7    ZERO.C      -SPACE- IN A BIT STRING                    038710
          SB5    TR.BTOC                                                038720
          ZR     B4,TST.SS   JP EBCDIC                                  038730
          SX7    ZERO.A      ASCII                                      038740
          SB5    TR.BTOA                                                038750
          EQ     TST.SS                                                 038760
*                                                                       038770
          SPACE  2                                                      038780
*                                                                       038790
 TESTT.XB SB7    TSTT.6      X-B                                        038800
          EQ     FTXVBVR
*                                                                       038820
          SPACE  2                                                      038830
*                                                                       038840
 TESTT.B1 SB7    TST.B1      B-LITERAL STRING                           038850
          EQ     FTBVS
*                                                                       038870
          SPACE  2                                                      038880
*                                                                       038890
 TESTT.X1 SB7    TSTT.9      X-LITERAL STRING                           038900
          EQ     FTXVS
 TSTT.9   SB7    B6                                                     038920
          SB6    TSTT.10                                                038930
          EQ     TXTEST      TEST CHAR SET FLAG                         038940
 TSTT.10  SX6    8           BITS PER -X- CHAR                          038950
          SB6    B7                                                     038960
          SX7    SPACE.X                                                038970
          SA6    T.M1                                                   038980
          SB5    TR.CTOX                                                038990
          SX6    SIZE.X                                                 039000
          ZR     B4,TST.SS   EBCDIC                                     039010
          SB5    TR.ATOX     ASCII                                      039020
          EQ     TST.SS                                                 039030
*                                                                       039040
          SPACE  4                                                      039050
*                                                                       039060
*  THE FOLLOWING SECTIONS HANDLE NUMERIC COMPARISONS.  ARRAYS T.NUM(3)  039070
*   AND T.NUM1(3) ARE USED TO HOLD THE TRIPLE-PRECISION QUANTITIES TO   039080
*   BE COMPARED.  NOTE THAT T.NUM MAY ALREADY BE HOLDING A VALUE IF     039090
*   A NUMERIC LITERAL STRING WAS USED.                                  039100
*                                                                       039110
*   THE COMPARISON IS FOR (T.NUM -REL- T.NUM1).                         039120
*                                                                       039130
*         TEMPORARY CELLS USED..                                        039140
*                                                                       039150
*                T.SAVEB5    TEMPORARY SPOT TO HOLD RETURN ADDRESS      039160
*                T.TEMP                                                 039170
*                                                                       039180
          SPACE  2                                                      039190
*                                                                       039200
* THE FIRST SECTIONS BELOW ARE GENERAL ROUTINES, CORRESPONDING TO       039210
*  ROW AND COLUMN ENTRIES OF THE TEST MATRIX.                           039220
*                                                                       039230
          SPACE  2                                                      039240
*                                                                       039250
 TSTT..0  EQU    TST..0      NUMERIC LITERAL                            039260
*                                                                       039270
          SPACE  2                                                      039280
*                                                                       039290
 TSTT..1  EQU    TST..1      STRING LITERAL                             039300
*                                                                       039310
          SPACE  2                                                      039320
*                                                                       039330
 .A       ECHO   ,Q=(H,W,G,F,L,E,P,S,X,B)                               039340
 TSTT..Q  SB4    CONT.Q.                                                039350
          EQ     TST..$                                                 039360
          SPACE  2                                                      039370
 .A       ENDD                                                          039380
*                                                                       039390
 .B       ECHO   ,Q=(H,W,G,F,L,E,P,S,X,B)                               039400
 TSTT.Q.  SB5    TST.COM                                                039410
          EQ     CONT.Q.                                                039420
 .B       ENDD                                                          039430
*                                                                       039440
          SPACE  4                                                      039450
*                                                                       039460
* GENERATE CODE FOR TEST POINTS                                         039470
*                                                                       039480
*                                                                       039490
 .A       ECHO   ,P=(H,W,G,F,L,E,P,S),R=(H,W,G,W,G,E,X,X)               039500
 .B       ECHO   ,Q=(1,X,B),T=(S,XV,B)
 XXX      SYMBOL                                                        039520
 TESTT.P_Q  SB7  "XXX"       P-Q                                        039530
          EQ     FT_R_T                                                 039540
 "XXX"    SB5    TSTT.P.                                                039550
          EQ     TSTT..Q                                                039560
          SPACE  2                                                      039570
 .B       ENDD                                                          039580
 .A       ENDD                                                          039590
*                                                                       039600
 .A       ECHO   ,U=(H,W,G,F,L,E,P,S,X,B),R=(H,W,G,W,G,E,X,X,XV,B)
 .B       ECHO   ,Q=(0,H,W,G,F,L,E,P,S),T=(( ),H,W,G,W,G,E,X,X)         039620
 XXX      SYMBOL                                                        039630
 TESTT.U_Q  SB7  "XXX"       U-Q                                        039640
          EQ     FT_R_T                                                 039650
 "XXX"    SB5    TSTT.U.                                                039660
          EQ     TSTT..Q                                                039670
          SPACE  2                                                      039680
 .B       ENDD                                                          039690
 .A       ENDD                                                          039700
 FTPTR    TITLE  FIXPTR -- SUBROUTINES TO FIX UP TEST POINTERS (TAPE)   013190
*                                                                       013200
****  FTPTR - A SERIES OF ROUTINES TO FIX UP POINTERS FOR TESTING FIELDS
*         IN TAPE (IBM) CODE                                            013220
*                                                                       013230
          SPACE  1,22                                                   013250
*                                                                       013260
*     THE FOLLOWING ROUTINES ARE USED TO SET AND CHECK THE POINTERS     013270
*     FOR TESTING.  THEY USE THE SINGLE POINTER PICKUP ROUTINES         013280
*     DESCRIBED LATER.                                                  013290
*                                                                       013300
*     ALL OF THESE ROUTINES PUT POINTER 1 IN T.T1 AND POINTER 2 IN T.T2 013310
*     UNLESS THE NAME IS SUFFIXED BY -R-, IN WHICH CASE THE POINTERS    013320
*     ARE REVERSED.                                                     013330
*                                                                       013340
*     ENTER WITH    B7 = RETURN ADDRESS                                 013350
*                                                                       013360
*     THE ROUTINES ARE NAMED.. FT-A-B                                   013370
*         WHERE A AND B ARE ONE OF    B  - BIT STRING                   013380
*                                          (VARIABLE LENGTH)
* 
*                                     BV - BIT STRING (VARIABLE LENGTH) 
*                                     X  - 8-BIT CHARACTER STRING       013390
*                                     H  - 16 BIT HALFWORD              013400
*                                     W  - 32 BIT WORD                  013410
*                                     G  - 64 BIT DOUBLE WORD           013420
*                                     E  - 128 BIT QUADRUPLE WORD       013430
*                                     S  - THE LITERAL STRING           013440
*                                  BLANK - THE NUMERIC LITERAL          013450
*                                                                       013460
****
          SPACE  4                                                      013480
 FT.      SA7    T.T2 
          JP     B7 
* 
 FT.R     SA3    T.COND      REVERSE ORDER TEST 
          LX4    X3,B1
          BX4    X4-X3       XOR BITS 1 AND 2 OF CONDITION FLAG 
          LX4    59-2 
          PL     X4,FT.RX    EQUAL OR NOT EQUAL, NO CHANGE
          SX6    6B 
          BX6    X3-X6       FLIP SENSE OF INEQUALITY 
          SA6    A3 
 FT.RX    SA7    T.T1 
          JP     B7 
          SPACE  3
*                                                                       013540
 .B       ECHO   ,Q=(B,BV,X,XV,H,W,G,E,S) 
          SPACE  2                                                      013560
 FT._Q     SA7    T.T1                                                  013570
          SB3    FT.                                                    013580
          EQ     FTP2M_Q                                                013590
 .A       ECHO   ,P=(B,BV,X,XV,H,W,G,E) 
          SPACE  1                                                      013610
 FT_P_Q     SB3    FT._Q                                                013620
          EQ     FTP1M_P                                                013630
 .A       ENDD                                                          013640
 .B       ENDD                                                          013650
*                                                                       013660
 FT.BVR   SA7    T.T2        REVERSE POINTER SPECIAL
          SB3    FT.R                                                   013680
          EQ     FTP2MBV
 FTXVBVR  SB3    FT.BVR 
          EQ     FTP1MXV
*                                                                       013720
*                                                                       013730
* THE FOLLOWING ZRE USED FOR -0 TYPES (NUMERIC LITERAL)                 013740
*                                                                       013750
 .B       ECHO   ,Q=(B,X,XV,H,W,G,E)
          SPACE  2                                                      013770
 FT_Q      SB3    FT.RX 
          EQ     FTP1M_Q                                                013790
 .B       ENDD                                                          013800
*                                                                       013810
          SPACE  4,31                                                   013820
**    THE FOLLOWING ROUTINES PICK UP A POINTER, PUT IT IN X7, AND 
*     CHECK THE M-VALUE FOR LEGALITY..                                  013850
*                                                                       013860
*                   FTP1MB         -PTR 1, BIT STRING                   013870
*                   FTP2MB         -PTR 2, BIT STRING                   013880
* 
*                   FTP1MBV        -PTR 1, BIT STRING (VAR. LENGTH) 
*                   FTP2MBV        -PTR 2, BIT STRING (VAR. LENGTH) 
*                                                                       013890
*                   FTP1MX         -PTR 1, 8-BIT CHARACTER STRING       013900
*                   FTP2MX         -PTR 2, 8-BIT CHARACTER STRING       013910
* 
*                   FTP1MXV        -PTR 1, 8-BIT CHARACTER STRING (VAR) 
*                   FTP2MXV        -PTR 2, 8-BIT CHARACTER STRING (VAR) 
*                                                                       013920
*                   FTP1MH         -PTR 1, 16 BIT HALFWORD              013930
*                   FTP2MH         -PTR 2, 16 BIT HALFWORD              013940
*                                                                       013950
*                   FTP1MW         -PTR 1, 32 BIT WORD                  013960
*                   FTP2MW         -PTR 2, 32 BIT WORD                  013970
*                                                                       013980
*                   FTP1MG         -PTR 1, 64 BIT DOUBLE WORD           013990
*                   FTP2MG         -PTR 2, 64 BIT DOUBLE WORD           014000
*                                                                       014010
*                   FTP1ME         -PTR 1, 128 BIT QUADRUPLE WORD       014020
*                   FTP2ME         -PTR 2, 128 BIT QUADRUPLE WORD       014030
*                                                                       014040
*                   FTP2MS         SPECIAL, LITERAL CHARACTER STRING    014050
*                                                                       014060
*     ENTER WITH..                                                      014070
*                                                                       014080
*         B3 = RETURN ADDRESS                                           014090
*                                                                       014100
*     THESE ROUTINES CALL FTP1 AND FTP2                                 014110
*                                                                       014120
          SPACE  4                                                      014140
 FTP1MB   SB5    FTPM.1      PTR 1, BIT FIELD                           014150
          SB4    B1                                                     014160
          EQ     FTP1                                                   014170
 FTPM.1   SA3    T.M1                                                   014180
 FTPM.2   PL     X3,FTPM.3                                              014190
          SX3    1           USE 1 BIT IF UNSPECIFIED                   014200
 FTPM.3   BX6    X7                                                     014210
          AX6    36                                                     014220
          IX6    X6-X3                                                  014230
          NG     X6,FTPM.E2  ERROR, FIELD EXTENDS PAST END OF RECORD    014240
 FTPM.3A  MX0    24 
          LX3    36          ALIGN NEW LENGTH 
          BX6    -X0*X7      MAKE HOLE FOR LENGTH 
          IX7    X6+X3       UPDATE PTR WORD
 FTPM.3B  BX1    X7          PTR
          JP     B3                                                     014250
*                                                                       014260
 FTP2MB   SB5    FTPM.4      PTR 2, BIT FIELD                           014270
          SB4    B1                                                     014280
          EQ     FTP2                                                   014290
 FTPM.4   SA3    T.M2                                                   014300
          EQ     FTPM.2                                                 014310
* 
 FTP1MBV  SB5    FTPM4A      PTR 1, BIT FIELD (VARIABLE LENGTH) 
          SB4    1
          EQ     FTP1 
 FTPM4A   SA3    T.M1 
 FTPM.4B  PL     X3,FTPM.4C 
          SX3    1           USE 1 BIT IF UNSPECIFIED 
 FTPM.4C  BX6    X7 
          AX6    36 
          IX6    X6-X3
          PL     X6,FTPM.3A  USE SPECIFIED LENGTH 
          EQ     FTPM.3B     USE REST OF RECORD 
* 
 FTP2MBV  SB5    FTPM.4D     PTR 2, BIT FIELD (VARIABLE LENGTH) 
          SB4    1
          EQ     FTP2 
 FTPM.4D  SA3    T.M2 
          EQ     FTPM.4B
*                                                                       014320
 FTP1MX   SB5    FTPM.6      PTR 1, 8-BIT CHAR FIELD                    014330
 FTPM.5   SB4    B0                                                     014340
          EQ     FTP1                                                   014350
 FTPM.6   SA3    T.M1                                                   014360
 FTPM.7   PL     X3,FTPM.8                                              014370
          SX3    B1          USE 1 CHAR IF UNSPECIFIED                  014380
 FTPM.8   LX3    3           *8                                         014390
          EQ     FTPM.3                                                 014400
*                                                                       014410
 FTP2MX   SB5    FTPM.10     PTR 2, 8-BIT CHAR FIELD                    014420
 FTPM.9   SB4    B0                                                     014430
          EQ     FTP2                                                   014440
 FTPM.10  SA3    T.M2                                                   014450
          EQ     FTPM.7                                                 014460
* 
 FTP1MXV  SB5    FTPM.10A    PTR 1, 8-BIT CHAR FIELD (VAR.) 
          EQ     FTPM.5 
 FTPM.10A SA3    T.M1 
 FTPM.10B PL     X3,FTPM.10C
          SX3    1           USE 1 CHAR IF UNSPECIFIED
 FTPM.10C BX6    X7 
          AX6    36+3        CHARACTERS LEFT
          IX6    X6-X3
          LX3    3           *8 = BITS
          PL     X6,FTPM.3A  USE SPECIFIED LENGTH 
          BX3    X6          GET NEAREST NUMBER OF CHARACTERS 
          AX3    36+3          IN REMAINDER OF RECORD 
          LX3    3
          EQ     FTPM.3A     USE REST OF RECORD 
* 
 FTP2MXV  SB5    FTPM.10D    PTR 2, 8-BIT CHAR FIELD (VAR.) 
          EQ     FTPM.9 
 FTPM.10D SA3    T.M2 
          EQ     FTPM.10B 
*                                                                       014470
 FTP1MH   SB5    FTPM.11     PTR 1, 16 BIT HALFWORD                     014480
          EQ     FTPM.5                                                 014490
 FTPM.11  SA2    T.M1                                                   014500
 FTPM.12  SX3    16                                                     014510
 FTPM.13  NG     X2,FTPM.3                                              014520
          EQ     FTPM.E1     ERROR, M SPECIFICATION ILLEGAL             014530
*                                                                       014540
 FTP2MH   SB5    FTPM.14     PTR 2, 16 BIT HALFWORD                     014550
          EQ     FTPM.9                                                 014560
 FTPM.14  SA2    T.M2                                                   014570
          EQ     FTPM.12                                                014580
*                                                                       014590
 FTP1MW   SB5    FTPM.15     PTR 1, 32 BIT WORD                         014600
          EQ     FTPM.5                                                 014610
 FTPM.15  SA2    T.M1                                                   014620
 FTPM.16  SX3    32                                                     014630
          EQ     FTPM.13                                                014640
*                                                                       014650
 FTP2MW   SB5    FTPM.17     PTR 2, 32 BIT WORD                         014660
          EQ     FTPM.9                                                 014670
 FTPM.17  SA2    T.M2                                                   014680
          EQ     FTPM.16                                                014690
*                                                                       014700
 FTP1MG   SB5    FTPM.18     PTR 1, 64 BIT DOUBLE WORD                  014710
          EQ     FTPM.5                                                 014720
 FTPM.18  SA2    T.M1                                                   014730
 FTPM.19  SX3    64                                                     014740
          EQ     FTPM.13                                                014750
*                                                                       014760
 FTP2MG   SB5    FTPM.20     PTR 2, 64 BIT DOUBLE WORD                  014770
          EQ     FTPM.9                                                 014780
 FTPM.20  SA2    T.M2                                                   014790
          EQ     FTPM.19                                                014800
*                                                                       014810
 FTP1ME   SB5    FTPM.21     PTR 1, 128 BIT QUADRUPLE WORD              014820
          EQ     FTPM.5                                                 014830
 FTPM.21  SA2    T.M1                                                   014840
 FTPM.22  SX3    128                                                    014850
          EQ     FTPM.13                                                014860
*                                                                       014870
 FTP2ME   SB5    FTPM.23     PTR 2, 128 BIT QUADRUPLE WORD              014880
          EQ     FTPM.9                                                 014890
 FTPM.23  SA2    T.M2                                                   014900
          EQ     FTPM.22                                                014910
*                                                                       014920
 FTP2MS   SA2    T.I2        SET UP POINTER TO LITERAL STRING           014930
          SX7    T.STRING                                               014940
          LX2    36                                                     014950
          BX7    X2+X7                                                  014960
          BX1    X7 
          JP     B3                                                     014970
*                                                                       014980
          SPACE  2                                                      014990
**    ERROR ACTIONS 
*                                                                       015020
 FTPM.E1  SA2    FTPM.M1     ERROR, M SPECIFICATION ILLEGAL             015030
          EQ     ERR.CON                                                015040
 FTPM.E2  SA2    FTPM.M2     ERROR, FIELD EXTENDS PAST END OF RECORD    015050
          EQ     ERR.CON                                                015060
****
*                                                                       015070
 FTPM.M1  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA   C/M SPECIFICATION ILLEGAL FOR DATA TYPE/               015090
 FTPM.M2  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA   C/TEST FIELD EXTENDS PAST END OF RECORD/               015110
****
          SPACE  4,17                                                   015120
**    FTPTR IS THE WORKER-NEE IN THIS SET OF ROUTINES.  IT EXPECTS
*                                                                       015150
*         X2   = REL WORD                                               015160
*         X3   = I WORD                                                 015170
*         A4   = ADDRESS OF W WORD                                      015180
*         B5   = RETURN ADDRESS                                         015190
*                                                                       015200
*         THE RESULTANT POINTER IS LEFT IN X7 UPON EXIT.                015210
*                                                                       015220
*FTP1, FTP2 ARE USED TO CALL FTPTR WITH THE PROPER POINTERS (1 OR 2)    015230
*             ENTER WITH                                                015240
*                                                                       015250
*         B4   = CHAR/BIT FLAG. (0=CHAR, 1=BIT)                         015260
*         B5   = RETURN ADDRESS, RETURN IS DIRECTLY FROM FTPTR          015270
*                                                                       015280
          SPACE  2                                                      015300
 FTPTR    LX3    3           I*8 = BITS                                 015310
          SA5    T.RECORD                                               015320
          PL     X2,FTPT.1   JP IF REL                                  015330
          SX0    8           ABS, OFFSET BY 8 BITS                      015340
          IX0    X3-X0                                                  015350
          EQ     FTPT.A                                                 015360
 FTPT.1   LX2    59          REL, FIX UP SIGN OF OFFSET                 015370
          BX0    X3                                                     015380
          SA3    T.INREC     CURRENT POINTER                            015390
          AX2    59                                                     015400
          SX7    X5          ADDRESS OF RECORD START                    015410
          BX0    X0-X2       SIGNED OFFSET IN X0                        015420
          SX6    X3          ADDRESS OF CURRENT BYTE                    015430
          AX5    18                                                     015440
          IX7    X6-X7       NUMBER OF WORDS TO CURRENT POSITION        015450
          AX3    18                                                     015460
          SX5    X5          USED BITS FROM START                       015470
          BX6    X7                                                     015480
          SX4    X3          USED BITS AT CURRENT POSITION              015490
          LX6    6           WORDS * 64                                 015500
          IX4    X4-X5       EXTRA BIT OFFSET IN POINTER DIFFERENCE     015510
          LX7    2           WORDS * 4                                  015520
          IX0    X0+X4                                                  015530
          SA5    A5                                                     015540
          SX2    7                                                      015550
          IX0    X0+X6                                                  015560
          IX0    X0-X7       BIT OFFSET TO DESIRED POSITION IN X0       015570
          IX0    X0+X2                                                  015580
          IX0    X0/X2,8     MAKE IT A MULTIPLE OF 8                    015590
          LX0    3           *8                                         015600
*                                                                       015610
 FTPT.A   SA4    A4          PICK UP W OFFSET                           015620
          SX7    X5          BASE WORD                                  015630
          AX5    18                                                     015640
          ZR     X4,FXPT.A1 
          SX4    X4-1 
 FXPT.A1  BSS    0
          IX0    X0+X4       FINAL OFFSET INTO RECORD                   015650
          SX6    X5          USED BITS IN FIRST WORD                    015660
          AX5    18                                                     015670
          NG     X0,FTPT.E1  ERROR, OFFSET IS NEGATIVE                  015680
          IX5    X0-X5                                                  015690
          IX0    X0+X6       MAKE OFFSET RELATIVE TO A WORD BOUNDARY    015700
          PL     X5,FTPT.B   FIELD PAST RIGHT END OF RECORD 
          BX2    X0                                                     015720
          BX5    -X5         REMAINING BITS AFTER ADJUSTMENT            015730
          IX2    X2/X3,60    GET NUMBER OF WORDS OFFSET                 015740
          IX7    X7+X2       ADD TO BASE WORD                           015750
          LX5    36                                                     015760
          BX3    X2                                                     015770
          LX2    6           *64                                        015780
          IX0    X0-X2                                                  015790
          LX3    2           *4                                         015800
          IX0    X0+X3       GIVES USED BITS                            015810
          BX7    X7+X5                                                  015820
          LX0    18                                                     015830
          BX7    X7+X0       POINTER WORD NOW IN X7                     015840
          JP     B5          EXIT                                       015850
* 
 FTPT.B   MX7    0           NULL FIELD, PASTRECORD END 
          JP     B3 
          SPACE  2
**    ERROR ACTIONS 
*                                                                       015880
 FTPT.E1  SA2    FTPT.M1     ERROR, POSITION OFF LEFT END               015890
          EQ     ERR.CON                                                015900
****
*                                                                       015930
 FTPT.M1  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA   C/TEST FIELD NOT IN RECORD, ON LEFT/                   015950
****
          SPACE  4                                                      015990
*                                                                       016000
 FTP1     SA4    T.W1        PROCESS POINTER 1                          016010
          SA2    T.REL1                                                 016020
          SA3    T.I1                                                   016030
          NZ     X3,FXPTNZ
          SX6    B0 
          BX3    X6 
          SA6    T.REL1            FORCE TO RELATIVE +0 
          BX2    X3 
          SA6    T.I1 
 FXPTNZ   BSS    0
          ZR     X4,FTPTR                                               016040
          NZ     B4,FTPTR                                               016050
          EQ     FTP.E1      ERROR, W NOT ZERO                          016060
*                                                                       016070
 FTP2     SA4    T.W2                                                   016080
          SA2    T.REL2 
          SA3    T.I2 
          NZ     X3,FXPTNZ2 
          SX6    B0 
          BX3    X6 
          SA6    T.REL2 
          BX2    X3 
          SA6    T.I2 
 FXPTNZ2  BSS    0
          ZR     X4,FTPTR                                               016110
          NZ     B4,FTPTR                                               016120
          EQ     FTP.E2      ERROR, W NOT ZERO                          016130
*                                                                       016140
* ERROR ACTIONS                                                         016150
*                                                                       016160
 FTP.E1   SA2    FTP.M1                                                 016170
          EQ     ERR.CON                                                016180
 FTP.E2   EQU    FTP.E1                                                 016190
****
*                                                                       016200
 FTP.M1   VFD    12/0,18/E.TST,12/0,18/*+1
          DATA   C/BIT SPECIFICATION ILLEGAL FOR NON BIT FIELD/         016220
****
          END 
