*DECK     CHKP
          IDENT  T8.CHK 
 CHKPAR   TITLE  CHKPAR - CHECK PARAMETERS FOR XREAD, XREREAD, XWRITE 
* 
**    CHKPAR - CHECK PARAMETERS FOR XREAD, XREREAD, XWRITE
* 
*         INPUT  -  X7 = ADDRESS OF TRACEBACK WORD
*                   A0 = (SOME ADDRESS) 
*                   B6 = RETURN ADDRESS 
* 
*         OUTPUT -  B1 = 1
*                   A0 = WSA
* 
*                   T.SAVEA0 = PREVIOUS A0 CONTENTS 
*                   T.ENTRY = X7 CONTENTS 
*                   T.A0     = WSA (PARAMETER 1)
*                   T.USEREC = RECORD AREA (PARAMETER 2)
*                   T.CSTR   = CONV-STRING POINTER (PARAMETER 3)
*                   T.STATW  = STATUS RETURN ADDRESS (PARAMETER 4)
* 
*CALL COM2
          SPACE  4
 CHKPAR   SA7    T.ENTRY     TRACEBACK
          SX6    A0 
          SA0    X1 
          SB1    1
          SA6    T.SAVEA0 
          ZR     X1,CHK.E1   ERROR, NO PARAMETERS 
          SX7    A0 
          LX1    60-24
          SA7    T.A0 
          MX0    60-6 
          BX2    -X0*X1      TYPE FIELD 
          ZR     X2,CHK.1    JP NO TYPE (FTN) 
          SX2    X2-40B 
          NG     X2,CHK.E2   ERROR, NOT A DATA TYPE 
          SX2    X2-4B
          ZR     X2,CHK.E2
          LX1    24+60-30 
          BX2    -X0*X1      BCP FIELD
          NZ     X2,CHK.E3   ERROR, FIELD NOT ALIGNED 
* 
 CHK.1    SA1    A1+B1       PARAMETER 2
          SA5    C.MAXSZ     PRESET MAX SIZE OF AREA
          ZR     X1,CHK.Z2   NO PARAMETER 
          SX7    X1 
          LX1    60-24
          BX2    -X0*X1      TYPE 
          ZR     X2,CHK.3    JP NO TYPE (FTN) 
          SX2    X2-40B 
          NG     X2,CHK.E2   NOT A DATA TYPE
          SX2    X2-4B
          ZR     X2,CHK.E2
          LX1    24+60-30 
          BX2    -X0*X1      BCP
          LX2    18+1 
          IX7    X2+X7       ADD BCP TO POINTER 
          LX2    1
          IX7    X2+X7
          LX1    30+60-36 
          SX5    X1          SIZE IN (6-BIT) CHARACTERS 
          LX1    36-21             RT JUST CLASS
          MX6    57 
          BX1    -X6*X1            CLASS ISOLATED 
          SX6    X1-2 
          NZ     X6,CHK.2          BR IF CLASS NON-NUMERIC
          MX6    51 
          BX5    -X6*X5            MSK SZ FIELD TO 9 BITS 
 CHK.2    IX6    X5+X5       CONVERT TO BITS
          LX5    2
          IX5    X5+X6
 CHK.3    LX5    36 
          IX7    X5+X7
          SA7    T.USEREC 
* 
          SA1    A1+B1       PARAMETER 3
          SA5    C.MAXSZ     PRESET MAX SIZE OF AREA
          ZR     X1,CHK.Z3   NO PARAMETER 
          SX7    X1 
          LX1    60-24
          BX2    -X0*X1      TYPE 
          ZR     X2,CHK.5    JP NO TYPE (FTN) 
          SX2    X2-40B 
          NG     X2,CHK.E2   NOT A DATA TYPE
          SX2    X2-4B
          ZR     X2,CHK.E2
          LX1    24+60-30 
          BX2    -X0*X1      BCP
          LX2    18+1 
          IX7    X2+X7       ADD BCP TO POINTER 
          LX2    1
          IX7    X2+X7
          LX1    30+60-36 
          SX5    X1          SIZE IN (6-BIT) CHARACTERS 
          LX1    36-21             RT JUST CLASS
          MX6    57 
          BX1    -X6*X1            CLASS ISOLATED 
          SX6    X1-2 
          NZ     X6,CHK.4          BR IF CLASS NON-NUMERIC
          MX6    51 
          BX5    -X6*X5            MSK SZ FIELD TO 9 BITS 
 CHK.4    IX6    X5+X5       CONVERT TO BITS
          LX5    2
          IX5    X5+X6
 CHK.5    LX5    36 
          IX7    X5+X7
          SA7    T.CSTR 
* 
          SA1    A1+B1       PARAMETER 4
          SX7    X1 
          AX1    18 
          SA7    T.STATW
          NZ     X1,CHK.E4   ERROR, NOT COMP-2
* 
          JP     B6          DONE, EXIT 
* 
* 
 CHK.Z2   SX6    0           NO SECOND PARAMETER
          SA6    T.USEREC 
 CHK.Z3   NO                 NO THIRD PARAMETER 
          SX6    B0 
          SA6    T.CSTR 
          SA6    T.STATW
* 
          JP     B6          EXIT 
* 
          SPACE  2
**    ERROR ACTIONS 
* 
 CHK.E1   SA2    CHK.M1 
          EQ     ERR.CON
 CHK.E2   SA2    CHK.M2 
          EQ     ERR.CON
 CHK.E3   SA2    CHK.M3 
          EQ     ERR.CON
 CHK.E4   SA2    CHK.M4 
          EQ     ERR.CON
****
* 
 CHK.M1   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/NO PARAMETERS SUPPLIED TO SUBROUTINE/ 
 CHK.M2   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/INVALID DATA TYPE/
 CHK.M3   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/WSA NOT ALIGNED ON WORD BOUNDARY/ 
 CHK.M4   VFD    12/0,18/E.PAR,12/0,18/*+1
          DATA    C/STATUS RETURN NOT COMP-2/ 
****
          END 
