*COMDECK STBLMAC
 INITBL   MACRO  XX,XXMST,XXMTR 
 TP       MICRO  1,,*XX*
 "TP"_LEGN SET    0 
 MAXST    SET    XXMST
 MAXTR    SET    XXMTR
 NEXTST   SET    STATX
 NEXTTR   SET    0
          USE    /"TP"_LEGBM/ 
 "TP"_LEGBM BSS  0
          USE    *
          USE    /"TP"_STTBL/ 
 "TP"_STTBL BSS  0
          USE    *
          ENDM
 STATE    MACRO  STATN
          IFNE   STATN,NEXTST,1 
 ERR1     ERR    STATN       STATE NUMBER OUT OF SEQUENCE 
 FRSTSTT  IFEQ   STATN,STATX
 NEXTST   SET    0
 FRSTSTT  ELSE
          IFGT   STATN,MAXST,1
 ERR2     ERR    STATN       STATE NUMBER TOO LARGE 
 NEXTST   SET    STATN+1
 TRDIF    SET    MAXTR+1-NEXTTR 
          IFGT   TRDIF,0,3
          USE    /"TP"_LEGBM/ 
          VFD    TRDIF/0
          USE    *
 FRSTSTT  ENDIF 
 NEXTTR   SET    0
          ENDM
 TRIG     MACRO  TRIGN,NEWST,ACTION,TRIGC,TRIGB 
          IFC    EQ,**TRIGN*,1
 ERR3     ERR                TRIGGER NOT DEFINED
          IFLT   TRIGN,NEXTTR,1 
 ERR4     ERR    TRIGN       TRIGGER OUT OF SEQUENCE
          IFGT   TRIGN,MAXTR,1
 ERR5     ERR    TRIGN       TRIGGER VALUE TOO LARGE
 TRDIF    SET    TRIGN-NEXTTR 
          USE    /"TP"_LEGBM/ 
          IFGT   TRDIF,0,1
          VFD    TRDIF/0
          VFD    1/1
          USE    *
 NEXTTR   SET    TRIGN+1
 "TP"_LEGN SET  "TP"_LEGN+1 
 PARLST   ECHO   ,PAR=(NEWST,ACTION,TRIGC,TRIGB),NAM=(NST,ACT,TRC,TRB)
 BLPAR    IFC    EQ,**PAR*
 NAM      SET    NOCHG
 BLPAR    ELSE
 NAM      SET    PAR
 BLPAR    ENDIF 
 PARLST   ENDD
          USE    /"TP"_STTBL/ 
          VFD    6/NST,6/ACT,6/TRC,6/TRB,6/NOCHG
          USE    *
          ENDM
 ENDTBL   MACRO  XX 
 TP1      MICRO  1,,*XX*
          IFC    NE,*"TP1"*"TP"*,1
 ERR10    ERR    XX          WRONG TABLE ON ENDTBL STATEMENT
          IFLE   NEXTST,MAXST,1 
 ERR11    ERR                NOT ALL STATES WERE DEFINED
 TRDIF    SET    MAXTR+1-NEXTTR 
          USE    /"TP"_LEGBM/ 
          IFGT   TRDIF,0,1
          VFD    TRDIF/0
          VFD    *P/0 
 "TP"_LGEND BSS  0
          USE    *
 "TP"_LEGNW EQU "TP"_LGEND-"TP"_LEGBM 
          ENDM
 TBLDEF   MACRO  XX,XXORD 
 TP       MICRO  1,,*XX*
          IF     -DEF,TBORD,2 
 TBORD    SET    0
 TBLPNTR  BSS    0
          IFNE   XXORD,TBORD,1
 ERR12    ERR    XXORD       TABLE ORDINALS NOT IN SEQUENCE 
 TBORD    SET    TBORD+1
 "TP"_ENTRY VFD  12/"TP"_MTR,12/"TP"_LEGNW,18/"TP"_STTBL,18/"TP"_LEGBM
          ENDM
