home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / fortran / toolpack.000 / toolpack / toolpack1.2 / tools / istpl / POLOPT.MAC.f < prev   
Encoding:
Text File  |  1989-03-04  |  31.4 KB  |  1,084 lines

  1. C---------------------------------------------------------
  2. C    TOOLPACK/1    Release: 2.4
  3. C---------------------------------------------------------
  4. C---------------------------------------------------------
  5. C    TOOLPACK/1    Release: 2.4
  6. C---------------------------------------------------------
  7.  
  8. C The following defines must have these values as OUTTOK/RDTOK expect
  9. C them to - if they must be changed, look at OUTTOK & RDTOK.
  10.  
  11.  
  12.         SUBROUTINE POLOPT(SPEC,ISSED)
  13.         INTEGER SPEC(*)
  14.         LOGICAL ISSED
  15.  
  16. C ------------------------------------------------------------------------
  17. C
  18. C       P O L O P T  -  set POLish OPTion
  19. C
  20. C ------------------------------------------------------------------------
  21.  
  22. C---------------------------------------------------------
  23. C    TOOLPACK/1    Release: 2.4
  24. C---------------------------------------------------------
  25. C
  26. C  TKLAST = LAST TOKEN NUMBER
  27. C
  28.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  29.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  30.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  31.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  32.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  33.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  34.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  35.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  36.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  37.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  38.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  39.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  40.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  41.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  42.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  43.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  44.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  45.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  46.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  47.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  48.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  49.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  50.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  51.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  52.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  53.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  54.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  55.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  56.  
  57.  
  58.         COMMON/MARGIN/LMARGS,RMARGS,LMARGC,RMARGC
  59.         INTEGER LMARGS,RMARGS,LMARGC,RMARGC
  60.  
  61.         COMMON/CONTIN/CONCHR,CONCNT
  62.         INTEGER CONCHR,CONCNT
  63.  
  64.         COMMON/LFORM/LABELF,LABELC
  65.         INTEGER LABELF,LABELC
  66.  
  67.         COMMON/INDENT/INDDO,INDIF,INDCON,INDCMT,MAXIND
  68.         INTEGER INDDO,INDIF,INDCON,MAXIND
  69.         LOGICAL INDCMT
  70.  
  71.         COMMON/SEQNUM/SEQINI,SEQINC,SEQDIG,SEQFIL,SEQRQD
  72.         INTEGER SEQINI,SEQINC,SEQDIG,SEQFIL
  73.         LOGICAL SEQRQD
  74.  
  75.         COMMON/SPACNG/SPBEF,SPAFT
  76.         INTEGER SPBEF(-2:TKLAST,0:2),SPAFT(-2:TKLAST,0:2)
  77.  
  78.         COMMON/INTBRK/BRPRIO
  79.         INTEGER BRPRIO(-2:TKLAST,0:2)
  80.  
  81.         COMMON/BLINES/BLAFT,BLBEF,BLADEC,BLCHAR
  82.         INTEGER BLAFT(-2:TKLAST),BLBEF(-2:TKLAST),BLCHAR
  83.         LOGICAL BLADEC
  84.  
  85.         COMMON/RELBL/FLBINI,FLBINC,SLBINI,SLBINC,RLBFMT,RLBSTM
  86.         INTEGER FLBINI,FLBINC,SLBINI,SLBINC
  87.         LOGICAL RLBFMT,RLBSTM
  88.  
  89.         COMMON/DOCON/DOCONI,NDOCON,DOCONS,IOTHCO
  90.         LOGICAL DOCONI,IOTHCO
  91.         INTEGER NDOCON,DOCONS(30)
  92.  
  93.         COMMON/CMT/CMMODE,CBOX,CBTOP,CBSIDE,CMCHAR
  94.         INTEGER CMMODE,CBOX,CBTOP,CBSIDE,CMCHAR
  95.  
  96.         COMMON/CASE/KWCASE,IDCASE,STRCAS,CMCASE,FFCASE
  97.         INTEGER KWCASE,IDCASE,STRCAS,CMCASE,FFCASE
  98.  
  99.         COMMON/ASGLUP/VLEN
  100.         INTEGER VLEN
  101.  
  102.         COMMON/MOVFMT/MOVEF,MFFLAG
  103.         LOGICAL MOVEF,MFFLAG
  104.  
  105.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  106.         INTEGER LHS(134),RHS(134),LPPOS
  107.         LOGICAL QUERY
  108.  
  109.         COMMON/DECLUP/DLUP,DLEN,DLUPOS
  110.         LOGICAL DLUP
  111.         INTEGER DLEN,DLUPOS
  112.  
  113.         COMMON/TRCOPT/TRACE
  114.         LOGICAL TRACE
  115.  
  116.         COMMON/OPT15C/INDDOC,DELSED,BRKLIF
  117.         LOGICAL INDDOC,DELSED,BRKLIF
  118.  
  119.         COMMON/ERROPT/ERRCMT
  120.         LOGICAL ERRCMT
  121.  
  122.         COMMON/CVTOPT/CVTHFM,FMSBRK
  123.         LOGICAL CVTHFM,FMSBRK
  124.  
  125.         COMMON/REMTOK/RMOPCF
  126.         LOGICAL RMOPCF
  127.  
  128.         INTEGER PARTBL(355),XOPTBL(20),BOXTBL(25),KWCTBL(31),CASTBL(35)
  129.         INTEGER IDCTBL(56),CMMTBL(46),CONTBL(33),LBFTBL(44)
  130.         INTEGER BOXTBX(3),KWCTBX(3),CASTBX(3),IDCTBX(5),CMMTBX(4),
  131.      +          CONTBX(3),LBFTBX(3)
  132.  
  133.         LOGICAL FIRST
  134.  
  135.         SAVE
  136.  
  137.         INTEGER OPTNUM,I,J,STATUS,TMP
  138.         CHARACTER*132 ERRTXT
  139.  
  140.         INTEGER ZKWLUK,ZSPLIT,INDEXX,ZYESNO
  141.         EXTERNAL ZKWLUK,ZSPLIT,INDEXX,ZITOF,REMARK,ZYESNO
  142.  
  143.         DATA (PARTBL(I),I=1,125)/53,
  144.      +          98,108,97,100,101,99,129,
  145.      +          98,108,97,102,116,129,
  146.      +          98,108,98,101,102,129,
  147.      +          98,108,99,104,97,114,129,
  148.      +          98,114,107,108,105,102,129,
  149.      +          98,114,112,114,105,111,129,
  150.      +          99,98,111,120,129,
  151.      +          99,98,115,105,100,101,129,
  152.      +          99,98,116,111,112,129,
  153.      +          99,109,99,97,115,101,129,
  154.      +          99,109,99,104,97,114,129,
  155.      +          99,109,109,111,100,101,129,
  156.      +          99,111,110,99,104,114,129,
  157.      +          99,118,116,104,102,109,129,
  158.      +          100,101,108,115,101,100,129,
  159.      +          100,108,101,110,129,
  160.      +          100,108,117,112,129,
  161.      +          100,111,99,111,110,105,129,
  162.      +          101,114,114,99,109,116,129/
  163.         DATA (PARTBL(I),I=126,235)/
  164.      +          102,102,99,97,115,101,129,
  165.      +          102,108,98,105,110,99,129,
  166.      +          102,108,98,105,110,105,129,
  167.      +          102,109,115,98,114,107,129,
  168.      +          105,100,99,97,115,101,129,
  169.      +          105,110,100,99,109,116,129,
  170.      +          105,110,100,99,111,110,129,
  171.      +          105,110,100,100,111,129,
  172.      +          105,110,100,100,111,99,129,
  173.      +          105,110,100,105,102,129,
  174.      +          105,111,116,104,99,111,129,
  175.      +          107,119,99,97,115,101,129,
  176.      +          108,97,98,101,108,99,129,
  177.      +          108,97,98,101,108,102,129,
  178.      +          108,109,97,114,103,99,129,
  179.      +          108,109,97,114,103,115,129/
  180.         DATA (PARTBL(I),I=236,355)/
  181.      +          109,111,118,101,102,129,
  182.      +          114,108,98,102,109,116,129,
  183.      +          114,108,98,115,116,109,129,
  184.      +          114,109,97,114,103,99,129,
  185.      +          114,109,97,114,103,115,129,
  186.      +          114,109,111,112,99,102,129,
  187.      +          115,101,113,100,105,103,129,
  188.      +          115,101,113,102,105,108,129,
  189.      +          115,101,113,105,110,99,129,
  190.      +          115,101,113,105,110,105,129,
  191.      +          115,101,113,114,113,100,129,
  192.      +          115,108,98,105,110,99,129,
  193.      +          115,108,98,105,110,105,129,
  194.      +          115,112,97,102,116,129,
  195.      +          115,112,98,101,102,129,
  196.      +          115,116,114,99,97,115,129,
  197.      +          116,114,97,99,101,129,
  198.      +          118,108,101,110,129/
  199.  
  200.         DATA XOPTBL/2,
  201.      +       110,97,103,95,115,116,97,110,100,97,
  202.      +114,100,129,
  203.      +       113,117,101,114,121,129/
  204.  
  205.         DATA BOXTBL/3,
  206.      +       104,97,108,102,95,98,111,120,129,
  207.      +       110,111,110,101,129,
  208.      +       119,104,111,108,101,95,98,111,120,129/
  209.  
  210.         DATA KWCTBL/3,
  211.      +       108,111,119,101,114,99,97,115,101,129,
  212.      +       109,105,120,101,100,99,97,115,101,129,
  213.      +       117,112,112,101,114,99,97,115,101,129/
  214.  
  215.         DATA CASTBL/3,
  216.      +       108,111,119,101,114,99,97,115,101,129,
  217.      +       111,114,105,103,105,110,97,108,95,
  218.      +99,97,115,101,129,
  219.      +       117,112,112,101,114,99,97,115,101,129/
  220.  
  221.         DATA IDCTBL/5,
  222.      +       105,110,118,101,114,116,99,97,115,101,129,
  223.      +       108,111,119,101,114,99,97,115,101,129,
  224.      +       109,105,120,101,100,99,97,115,101,129,
  225.      +       111,114,105,103,105,110,97,108,95,99,
  226.      +97,115,101,129,
  227.      +       117,112,112,101,114,99,97,115,101,129/
  228.  
  229.         DATA CMMTBL/4,
  230.      +       110,111,114,109,97,108,129,
  231.      +       115,107,105,112,95,108,101,97,100,105,
  232.      +110,103,95,98,108,97,110,107,115,129,
  233.      +       116,114,117,110,99,97,116,101,129,
  234.      +       118,101,114,98,97,116,105,109,129/
  235.  
  236.         DATA CONTBL/3,
  237.      +       97,108,112,104,97,98,101,116,105,99,129,
  238.      +       97,108,112,104,97,110,117,109,101,114,105,
  239.      +99,129,
  240.      +       110,117,109,101,114,105,99,129/
  241.  
  242.         DATA LBFTBL/3,
  243.      +       108,101,102,116,95,106,117,115,116,105,
  244.      +102,105,101,100,129,
  245.      +       114,105,103,104,116,95,106,117,115,116,
  246.      +105,102,105,101,100,129,
  247.      +       122,101,114,111,95,112,97,100,100,101,
  248.      +100,129/
  249.  
  250.         DATA BOXTBX/1,0,2/,KWCTBX/1,2,0/,CASTBX/2,0,1/,IDCTBX/4,2,3,0,1/
  251.         DATA CMMTBX/0,1,3,2/,CONTBX/2,3,1/,LBFTBX/0,1,2/
  252.  
  253.         DATA FIRST/.TRUE./
  254.  
  255.         IF (FIRST) THEN
  256.             FIRST=.FALSE.
  257.             QUERY=.FALSE.
  258.         END IF
  259.         STATUS=ZSPLIT(SPEC,LHS,RHS)
  260.         LPPOS=INDEXX(LHS,40)
  261.         IF (LPPOS.GT.0) LHS(LPPOS)=129
  262.         OPTNUM=ZKWLUK(LHS,PARTBL)
  263.         IF (LPPOS.GT.0) LHS(LPPOS)=40
  264.         IF (OPTNUM.GT.0) THEN
  265.             GOTO (1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,
  266.      +            1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,
  267.      +            1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,
  268.      +            1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,
  269.      +            1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,
  270.      +            1051,1052,1053) OPTNUM
  271.         ELSE
  272.             IF (STATUS.EQ.-1 .AND. LPPOS.EQ.0) THEN
  273.                 OPTNUM=ZKWLUK(LHS,XOPTBL)
  274.             END IF
  275.             IF (OPTNUM.GT.0) THEN
  276.                 GOTO (5000,5100) OPTNUM
  277.             ELSE
  278.                 CALL ZITOF(LHS,1,132,ERRTXT,.TRUE.)
  279.                 CALL REMARK('Unknown Option Ignored: '//ERRTXT)
  280.             END IF
  281.         END IF
  282.         RETURN
  283.  
  284.  1001   CALL SETLOG(BLADEC)
  285.         RETURN
  286.  
  287.  1002   CALL SETVEC(BLAFT)
  288.         RETURN
  289.  
  290.  1003   CALL SETVEC(BLBEF)
  291.         RETURN
  292.  
  293.  1004   CALL SETCHR(BLCHAR)
  294.         RETURN
  295.  
  296.  1005   CALL SETLOG(BRKLIF)
  297.         RETURN
  298.  
  299.  1006   CALL SETVC2(BRPRIO)
  300.         RETURN
  301.  
  302.  1007   IF (ISSED) THEN
  303.             CALL REMARK('Cannot change CBOX in a SED')
  304.         ELSE
  305.             CALL SETKEY(CBOX,BOXTBL,BOXTBX)
  306.         END IF
  307.         RETURN
  308.  
  309.  1008   CALL SETCHR(CBSIDE)
  310.         RETURN
  311.  
  312.  1009   CALL SETCHR(CBTOP)
  313.         RETURN
  314.  
  315.  1010   CALL SETKEY(CMCASE,CASTBL,CASTBX)
  316.         RETURN
  317.  
  318.  1011   CALL SETCHR(CMCHAR)
  319.         RETURN
  320.  
  321.  1012   CALL SETKEY(CMMODE,CMMTBL,CMMTBX)
  322.         RETURN
  323.  
  324.  1013   IF (RHS(1).EQ.39) THEN
  325.             TMP=CONCHR
  326.             CALL SETCHR(TMP)
  327.             IF (TMP.EQ.32 .OR. TMP.EQ.48) THEN
  328.                 CALL BADVAL
  329.             ELSE
  330.                 CONCHR=TMP
  331.             END IF
  332.         ELSE
  333.             CALL SETKEY(CONCHR,CONTBL,CONTBX)
  334.         END IF
  335.         RETURN
  336.  
  337.  1014   CALL SETLOG(CVTHFM)
  338.         RETURN
  339.  
  340.  1015   CALL SETLOG(DELSED)
  341.         RETURN
  342.  
  343.  1016   CALL SETINT(DLEN,0,50)
  344.         RETURN
  345.  
  346.  1017   CALL SETLOG(DLUP)
  347.         RETURN
  348.  
  349.  1018   IF (ISSED) THEN
  350.             CALL REMARK('Cannot change DOCONI in a SED')
  351.         ELSE
  352.             CALL SETLOG(DOCONI)
  353.         END IF
  354.         RETURN
  355.  
  356.  1019   CALL SETLOG(ERRCMT)
  357.         RETURN
  358.  
  359.  1020   CALL SETKEY(FFCASE,CASTBL,CASTBX)
  360.         RETURN
  361.  
  362.  1021   CALL SETINT(FLBINC,-99999,99999)
  363.         RETURN
  364.  
  365.  1022   CALL SETINT(FLBINI,0,99999)
  366.         RETURN
  367.  
  368.  1023   CALL SETLOG(FMSBRK)
  369.         RETURN
  370.  
  371.  1024   CALL SETKEY(IDCASE,IDCTBL,IDCTBX)
  372.         RETURN
  373.  
  374.  1025   CALL SETLOG(INDCMT)
  375.         RETURN
  376.  
  377.  1026   CALL SETINT(INDCON,-60,60)
  378.         RETURN
  379.  
  380.  1027   CALL SETINT(INDDO,0,60)
  381.         RETURN
  382.  
  383.  1028   CALL SETLOG(INDDOC)
  384.         RETURN
  385.  
  386.  1029   CALL SETINT(INDIF,0,60)
  387.         RETURN
  388.  
  389.  1030   IF (ISSED) THEN
  390.             CALL REMARK('Cannot change IOTHCO in a SED')
  391.         ELSE
  392.             CALL SETLOG(IOTHCO)
  393.         END IF
  394.         RETURN
  395.  
  396.  1031   CALL SETKEY(KWCASE,KWCTBL,KWCTBX)
  397.         RETURN
  398.  
  399.  1032   CALL SETINT(LABELC,1,5)
  400.         RETURN
  401.  
  402.  1033   CALL SETKEY(LABELF,LBFTBL,LBFTBX)
  403.         RETURN
  404.  
  405.  1034   CALL SETINT(LMARGC,2,80)
  406.         RETURN
  407.  
  408.  1035   CALL SETINT(LMARGS,7,40)
  409.         RETURN
  410.  
  411.  1036   IF (ISSED) THEN
  412.             CALL REMARK('Cannot change MOVEF in a SED')
  413.         ELSE
  414.             CALL SETLOG(MOVEF)
  415.         END IF
  416.         RETURN
  417.  
  418.  1037   IF (ISSED) THEN
  419.             CALL REMARK('Cannot change RLBFMT in a SED')
  420.         ELSE
  421.             CALL SETLOG(RLBFMT)
  422.         END IF
  423.         RETURN
  424.  
  425.  1038   IF (ISSED) THEN
  426.             CALL REMARK('Cannot change RLBSTM in a SED')
  427.         ELSE
  428.             CALL SETLOG(RLBSTM)
  429.         END IF
  430.         RETURN
  431.  
  432.  1039   CALL SETINT(RMARGC,10,132)
  433.         RETURN
  434.  
  435.  1040   CALL SETINT(RMARGS,10,132)
  436.         RETURN
  437.  
  438.  1041   CALL SETLOG(RMOPCF)
  439.         RETURN
  440.  
  441.  1042   CALL SETINT(SEQDIG,1,8)
  442.         RETURN
  443.  
  444.  1043   CALL SETCHR(SEQFIL)
  445.         RETURN
  446.  
  447.  1044   CALL SETINT(SEQINC,1,999)
  448.         RETURN
  449.  
  450.  1045   IF (ISSED) THEN
  451.             CALL REMARK('Cannot change SEQINI in a SED')
  452.         ELSE
  453.             CALL SETINT(SEQINI,0,9999)
  454.         END IF
  455.         RETURN
  456.  
  457.  1046   CALL SETLOG(SEQRQD)
  458.         RETURN
  459.  
  460.  1047   CALL SETINT(SLBINC,1,99999)
  461.         RETURN
  462.  
  463.  1048   CALL SETINT(SLBINI,1,99999)
  464.         RETURN
  465.  
  466.  1049   CALL SETVC2(SPAFT)
  467.         RETURN
  468.  
  469.  1050   CALL SETVC2(SPBEF)
  470.         RETURN
  471.  
  472.  1051   CALL SETKEY(STRCAS,CASTBL,CASTBX)
  473.         RETURN
  474.  
  475.  1052   CALL SETLOG(TRACE)
  476.         RETURN
  477.  
  478.  1053   CALL SETINT(VLEN,0,12)
  479.         RETURN
  480.  
  481. C *******
  482. C *
  483. C * eXtended OPtions
  484. C *
  485. C *******
  486.  
  487. C XOP: nag_standard
  488.  
  489.  5000   IF (QUERY) THEN
  490.             CALL ZMESS('"Nag_standard" requested:',1)
  491.             IF (ZYESNO(-2).EQ.-3) RETURN
  492.         END IF
  493.  
  494.         INDDO=3
  495.         INDIF=3
  496.         INDCON=-3
  497.         INDCMT=.TRUE.
  498.         CMMODE=1
  499. *
  500.         SPAFT(TIF,0)=0
  501.         SPAFT(TOPEN,0)=0
  502.         SPBEF(TTHEN,0)=0
  503. *
  504.         DO 5001 I=0,2
  505.             SPBEF(TRPARN,I)=1
  506.             SPAFT(TRPARN,I)=0
  507.             SPBEF(TLPARN,I)=0
  508.  5001       SPAFT(TLPARN,I)=1
  509. *
  510.         DO 5002 I=0,2
  511.             SPBEF(TCOMMA,I)=0
  512.  5002       SPAFT(TCOMMA,I)=1
  513. *
  514.         DO 5003 I=TLE,TGT
  515.             DO 5003 J=0,2
  516.                 SPBEF(I,J)=1
  517.  5003           SPAFT(I,J)=1
  518. *
  519.         DO 5004 I=TAND,TNEQV
  520.             DO 5004 J=0,2
  521.                 SPBEF(I,J)=2
  522.  5004           SPAFT(I,J)=2
  523. *
  524.         DO 5005 I=0,2
  525.             SPBEF(TPLUS,I)=1
  526.             SPAFT(TPLUS,I)=1
  527.             SPBEF(TMINUS,I)=1
  528.             SPAFT(TMINUS,I)=1
  529.  5005   CONTINUE
  530. *
  531.         DO 5006 I=0,2
  532.             SPBEF(TCOLON,I)=0
  533.  5006       SPAFT(TCOLON,I)=1
  534. *
  535.         VLEN=6
  536.         DLUP=.TRUE.
  537.         BRKLIF=.TRUE.
  538.         RETURN
  539.  
  540.  
  541. C XOP: query
  542.  
  543.  5100   IF (QUERY) THEN
  544.             CALL ZMESS('Ending QUERY mode..',1)
  545.             QUERY=(ZYESNO(-2).EQ.-3)
  546.         ELSE
  547.             QUERY=.TRUE.
  548.         END IF
  549.  
  550.         END
  551. C ----------------------------------------------------------------------
  552. C
  553. C       B A D V A L  -  BAD VALue for a parameter
  554. C
  555.  
  556.         SUBROUTINE BADVAL
  557.  
  558.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  559.         INTEGER LHS(134),RHS(134),LPPOS
  560.         LOGICAL QUERY
  561.  
  562.         SAVE
  563.  
  564.         INTEGER I
  565.         CHARACTER*132 ERRTXT
  566.  
  567.         INTRINSIC MAX
  568.  
  569.         INTEGER LENGTH
  570.         EXTERNAL REMARK,ZITOF,ZFTOI,SCOPY,LENGTH
  571.  
  572.         I=MIN(LENGTH(RHS),40)
  573.         CALL ZFTOI('] for option ',1,14,RHS(I+1),.FALSE.)
  574.         LHS(40)=129
  575.         CALL SCOPY(LHS,1,RHS,I+14)
  576.         CALL ZITOF(RHS,1,132,ERRTXT,.TRUE.)
  577.         CALL REMARK('Incorrect value ['//ERRTXT)
  578.  
  579.         END
  580. C ----------------------------------------------------------------------
  581. C
  582. C       N O T S U B  -  (remark) Not a subscripted option
  583. C
  584.  
  585.         SUBROUTINE NOTSUB
  586.  
  587.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  588.         INTEGER LHS(134),RHS(134),LPPOS
  589.         LOGICAL QUERY
  590.  
  591.         SAVE
  592.  
  593.         CHARACTER*132 ERRTXT
  594.  
  595.         EXTERNAL ZITOF,REMARK
  596.  
  597.         CALL ZITOF(LHS,1,LPPOS,ERRTXT,.TRUE.)
  598.         CALL REMARK('Not a subscripted option: '//ERRTXT)
  599.  
  600.         END
  601. C ----------------------------------------------------------------------
  602. C
  603. C       M I S S U B  -  (remark) Missing subscript
  604. C
  605.  
  606.         SUBROUTINE MISSUB
  607.  
  608.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  609.         INTEGER LHS(134),RHS(134),LPPOS
  610.         LOGICAL QUERY
  611.  
  612.         SAVE
  613.  
  614.         CHARACTER*132 ERRTXT
  615.  
  616.         EXTERNAL ZITOF,REMARK
  617.  
  618.         CALL ZITOF(LHS,1,132,ERRTXT,.TRUE.)
  619.         CALL REMARK('Missing subscript on option: '//ERRTXT)
  620.  
  621.         END
  622. C ----------------------------------------------------------------------
  623. C
  624. C       B A D S U B  -  (remark) Bad subscript value
  625. C
  626.  
  627.         SUBROUTINE BADSUB
  628.  
  629.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  630.         INTEGER LHS(134),RHS(134),LPPOS
  631.         LOGICAL QUERY
  632.  
  633.         SAVE
  634.  
  635.         CHARACTER*132 ERRTXT
  636.  
  637.         EXTERNAL ZITOF,REMARK
  638.  
  639.         CALL ZITOF(LHS,1,132,ERRTXT,.TRUE.)
  640.         CALL REMARK('Incorrect value for subscript: '//ERRTXT)
  641.  
  642.         END
  643. C ----------------------------------------------------------------------
  644. C
  645. C       O U T O P T  -  Output requested option
  646. C
  647.  
  648.         SUBROUTINE OUTOPT
  649.  
  650.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  651.         INTEGER LHS(134),RHS(134),LPPOS
  652.         LOGICAL QUERY
  653.  
  654.         SAVE
  655.  
  656.         EXTERNAL ZCHOUT,PUTLIN,PUTC
  657.  
  658.         CALL ZCHOUT('Option change: ',1)
  659.         CALL PUTLIN(LHS,1)
  660.         CALL PUTC(61)
  661.         CALL PUTLIN(RHS,1)
  662.         CALL ZCHOUT(' [old value=] ',1)
  663.  
  664.         END
  665. C ----------------------------------------------------------------------
  666. C
  667. C       S E T L O G  -  SET a LOGical parameter
  668. C
  669.  
  670.         SUBROUTINE SETLOG(VAR)
  671.         LOGICAL VAR
  672.  
  673.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  674.         INTEGER LHS(134),RHS(134),LPPOS
  675.         LOGICAL QUERY
  676.  
  677.         INTEGER TFTBL(16)
  678.  
  679.         SAVE
  680.  
  681.         INTEGER TEMP
  682.  
  683.         INTEGER ZKWLUK,ZYESNO
  684.         EXTERNAL ZKWLUK,ZYESNO,ZMESS
  685.  
  686.         DATA TFTBL/2,
  687.      +       46,102,97,108,115,101,46,129,
  688.      +       46,116,114,117,101,46,129/
  689.  
  690.         IF (LPPOS.GT.0) THEN
  691.             CALL NOTSUB
  692.         ELSE
  693.             TEMP=ZKWLUK(RHS,TFTBL)
  694.             IF (TEMP.LE.0) THEN
  695.                 CALL BADVAL
  696.             ELSE IF (QUERY .AND. ((TEMP.EQ.2).NEQV.VAR)) THEN
  697.                 CALL OUTOPT
  698.                 IF (VAR) THEN
  699.                     CALL ZMESS('..TRUE..',1)
  700.                 ELSE
  701.                     CALL ZMESS('..FALSE..',1)
  702.                 END IF
  703.                 IF (ZYESNO(-2).EQ.-2) VAR=(TEMP.EQ.2)
  704.             ELSE
  705.                 VAR=(TEMP.EQ.2)
  706.             END IF
  707.         END IF
  708.  
  709.         END
  710. C ----------------------------------------------------------------------
  711. C
  712. C       S E T I N T  -  SET INTeger parameter
  713. C
  714.  
  715.         SUBROUTINE SETINT(VAR,LB,UB)
  716.         INTEGER VAR,LB,UB
  717.  
  718.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  719.         INTEGER LHS(134),RHS(134),LPPOS
  720.         LOGICAL QUERY
  721.  
  722.         SAVE
  723.  
  724.         INTEGER PNTR,LASTP,TEMP,PTR
  725.  
  726.         INTEGER ZSCTOI,ZYESNO
  727.         EXTERNAL ZSCTOI,SKIPBL,ZYESNO,PUTDEC,PUTC
  728.  
  729.         IF (LPPOS.NE.0) THEN
  730.             CALL NOTSUB
  731.         ELSE
  732.             PNTR=1
  733.             CALL SKIPBL(RHS,PNTR)
  734.             LASTP=PNTR
  735. C If front of RHS matches whole of LHS, we have an incremental setting,
  736. C vis. LMARGS=LMARGS+3
  737.             PTR=1
  738.  100        IF (LHS(PTR).EQ.RHS(PNTR) .AND. LHS(PTR).NE.129) THEN
  739.                 PTR=PTR+1
  740.                 PNTR=PNTR+1
  741.                 GOTO 100
  742.             END IF
  743. C Make sure an incremental setting begins with + or -
  744.             IF (LHS(PTR).EQ.129 .AND. (RHS(PNTR).EQ.43 .OR.
  745.      +          RHS(PNTR).EQ.45)) THEN
  746. C It is an incremental setting - fix check for legal number
  747.                 LASTP=PNTR
  748.                 TEMP=VAR+ZSCTOI(RHS,PNTR)
  749.             ELSE
  750. C Not an incremental setting - restore PNTR value
  751.                 PNTR=LASTP
  752.                 TEMP=ZSCTOI(RHS,PNTR)
  753.             END IF
  754.             IF (PNTR.EQ.LASTP .OR. TEMP.LT.LB .OR. TEMP.GT.UB .OR.
  755.      +          RHS(PNTR).NE.129) THEN
  756.                 CALL BADVAL
  757.             ELSE IF (QUERY .AND. TEMP.NE.VAR) THEN
  758.                 CALL OUTOPT
  759.                 CALL PUTDEC(VAR,1)
  760.                 CALL PUTC(10)
  761.                 IF (ZYESNO(-2).EQ.-2) VAR=TEMP
  762.             ELSE
  763.                 VAR=TEMP
  764.             END IF
  765.         END IF
  766.  
  767.         END
  768. C ----------------------------------------------------------------------
  769. C
  770. C       S E T C H R  -  SET CHaRacter variable
  771. C
  772.  
  773.         SUBROUTINE SETCHR(VAR)
  774.         INTEGER VAR
  775.  
  776.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  777.         INTEGER LHS(134),RHS(134),LPPOS
  778.         LOGICAL QUERY
  779.  
  780.         SAVE
  781.  
  782.         INTEGER ZYESNO
  783.         EXTERNAL ZYESNO,PUTC,ZMESS
  784.  
  785.         IF (LPPOS.NE.0) THEN
  786.             CALL NOTSUB
  787.         ELSE IF (RHS(1).NE.39 .OR. RHS(3).NE.39 .OR.
  788.      +           RHS(4).NE.129) THEN
  789.             CALL BADVAL
  790.         ELSE IF (QUERY .AND. VAR.NE.RHS(2)) THEN
  791.             CALL OUTOPT
  792.             CALL PUTC(39)
  793.             CALL PUTC(VAR)
  794.             CALL ZMESS('''',1)
  795.             IF (ZYESNO(-2).EQ.-2) VAR=RHS(2)
  796.         ELSE
  797.             VAR=RHS(2)
  798.         END IF
  799.  
  800.         END
  801. C ----------------------------------------------------------------------
  802. C
  803. C       S E T V E C  -  Set vector element
  804. C
  805.  
  806.         SUBROUTINE SETVEC(VECTOR)
  807. C---------------------------------------------------------
  808. C    TOOLPACK/1    Release: 2.4
  809. C---------------------------------------------------------
  810. C
  811. C  TKLAST = LAST TOKEN NUMBER
  812. C
  813.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  814.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  815.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  816.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  817.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  818.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  819.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  820.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  821.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  822.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  823.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  824.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  825.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  826.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  827.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  828.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  829.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  830.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  831.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  832.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  833.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  834.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  835.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  836.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  837.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  838.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  839.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  840.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  841.  
  842.         INTEGER VECTOR(-2:TKLAST)
  843.  
  844.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  845.         INTEGER LHS(134),RHS(134),LPPOS
  846.         LOGICAL QUERY
  847.  
  848.         SAVE
  849.  
  850.         INTEGER PNTR,I,TEMP,LASTP
  851.  
  852.         INTEGER EVTSUB
  853.  
  854.         INTEGER ZSCTOI,ZYESNO
  855.         EXTERNAL ZSCTOI,ZYESNO,PUTDEC,PUTC
  856.  
  857.         IF (EVTSUB(I).EQ.-1) RETURN
  858.         PNTR=1
  859.         LASTP=PNTR
  860.         TEMP=ZSCTOI(RHS,PNTR)
  861.         IF (PNTR.EQ.LASTP) THEN
  862.             CALL BADVAL
  863.         ELSE IF (QUERY .AND. VECTOR(I).NE.TEMP) THEN
  864.             CALL OUTOPT
  865.             CALL PUTDEC(VECTOR(I),1)
  866.             CALL PUTC(10)
  867.             IF (ZYESNO(-2).EQ.-2) VECTOR(I)=TEMP
  868.         ELSE
  869.             VECTOR(I)=TEMP
  870.         END IF
  871.  
  872.         END
  873. C ----------------------------------------------------------------------
  874. C
  875. C       S E T V C 2  -  Set element of 2-dimensional vector
  876. C
  877.  
  878.         SUBROUTINE SETVC2(VECTOR)
  879. C---------------------------------------------------------
  880. C    TOOLPACK/1    Release: 2.4
  881. C---------------------------------------------------------
  882. C
  883. C  TKLAST = LAST TOKEN NUMBER
  884. C
  885.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  886.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  887.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  888.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  889.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  890.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  891.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  892.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  893.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  894.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  895.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  896.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  897.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  898.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  899.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  900.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  901.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  902.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  903.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  904.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  905.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  906.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  907.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  908.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  909.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  910.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  911.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  912.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  913.  
  914.         INTEGER VECTOR(-2:TKLAST,0:2)
  915.  
  916.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  917.         INTEGER LHS(134),RHS(134),LPPOS
  918.         LOGICAL QUERY
  919.  
  920.         SAVE
  921.  
  922.         INTEGER PNTR,I,TEMP(0:2),LASTP,ROW
  923.  
  924.         INTEGER EVTSUB
  925.  
  926.         INTEGER ZSCTOI,ZYESNO
  927.         EXTERNAL ZSCTOI,ZYESNO,PUTDEC,PUTC
  928.  
  929.         IF (EVTSUB(ROW).EQ.-1) RETURN
  930.         PNTR=1
  931.         LASTP=PNTR
  932.         DO 100 I=0,2
  933.             TEMP(I)=ZSCTOI(RHS,PNTR)
  934.             IF (PNTR.EQ.LASTP) THEN
  935.                 CALL BADVAL
  936.                 RETURN
  937.             END IF
  938.             IF (RHS(PNTR).NE.129) PNTR=PNTR+1
  939.             LASTP=PNTR
  940.  100    CONTINUE
  941.         IF (QUERY .AND. (TEMP(0).NE.VECTOR(ROW,0) .OR.
  942.      +     TEMP(1).NE.VECTOR(ROW,1) .OR. TEMP(2).NE.VECTOR(ROW,2))) THEN
  943.             CALL OUTOPT
  944.             DO 200 I=0,2
  945.                 CALL PUTDEC(VECTOR(ROW,I),1)
  946.  200            CALL PUTC(32)
  947.             CALL PUTC(10)
  948.             IF (ZYESNO(-2).EQ.-3) RETURN
  949.         END IF
  950.         DO 300 I=0,2
  951.  300        VECTOR(ROW,I)=TEMP(I)
  952.  
  953.         END
  954. C ----------------------------------------------------------------------
  955. C
  956. C       S E T K E Y  -  Set (integer) according to keyword value
  957. C
  958.  
  959.         SUBROUTINE SETKEY(VAR,TABLE,TBX)
  960.         INTEGER VAR,TABLE(*),TBX(*)
  961.  
  962.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  963.         INTEGER LHS(134),RHS(134),LPPOS
  964.         LOGICAL QUERY
  965.  
  966.         SAVE
  967.  
  968.         INTEGER I,J,K,L
  969.  
  970.         INTEGER ZKWLUK,ZYESNO
  971.         EXTERNAL ZKWLUK,ZYESNO,ZPTMES
  972.  
  973.         IF (LPPOS.NE.0) THEN
  974.             CALL NOTSUB
  975.         ELSE
  976.             I=ZKWLUK(RHS,TABLE)
  977.             IF (I.LE.0) THEN
  978.                 CALL BADVAL
  979.             ELSE IF (QUERY .AND. VAR.NE.TBX(I)) THEN
  980.                 CALL OUTOPT
  981.                 J=1
  982.  100            IF (TBX(J).NE.VAR) THEN
  983.                     J=J+1
  984.                     GOTO 100
  985.                 END IF
  986.                 L=1
  987.                 DO 300 K=2,J
  988.  200                IF (TABLE(L).NE.129) THEN
  989.                         L=L+1
  990.                         GOTO 200
  991.                     END IF
  992.                     L=L+1
  993.  300            CONTINUE
  994.                 CALL ZPTMES(TABLE(L),1)
  995.                 IF (ZYESNO(-2).EQ.-2) VAR=TBX(I)
  996.             ELSE
  997.                 VAR=TBX(I)
  998.             END IF
  999.         END IF
  1000.  
  1001.         END
  1002. C ----------------------------------------------------------------------
  1003. C
  1004. C       E V T S U B  -  Evaluate Token-name Subscript
  1005. C
  1006.  
  1007.         INTEGER FUNCTION EVTSUB(RESULT)
  1008.         INTEGER RESULT
  1009.  
  1010. C---------------------------------------------------------
  1011. C    TOOLPACK/1    Release: 2.4
  1012. C---------------------------------------------------------
  1013. C
  1014. C  TKLAST = LAST TOKEN NUMBER
  1015. C
  1016.       INTEGER TZEOF ,TASSIG,TBACKS,TBLOCK,TCALL ,TCLOSE,TCOMMO,TCONTI,
  1017.      +        TDATA ,TDO   ,TDIMEN,TELSE ,TELSIF,TEND  ,TENDFI,TENDIF,
  1018.      +        TENTRY,TEQUIV,TEXTER,TFUNCT,TFORMA,TGOTO ,TIF   ,TIMPLI,
  1019.      +        TINQUI,TINTRI,TOPEN ,TPARAM,TPAUSE,TPRINT,TPROGR,TREAD ,
  1020.      +        TRETUR,TREWIN,TSAVE ,TSTOP ,TSUBRO,TTHEN ,TTO   ,TWRITE,
  1021.      +        TINTEG,TREAL ,TDOUBL,TCOMPL,TLOGIC,TCHARA,TDCMPL,TCOMMA,
  1022.      +        TEQUAL,TCOLON,TLPARN,TRPARN,TLE   ,TLT   ,TEQ   ,TNE   ,
  1023.      +        TGE   ,TGT   ,TAND  ,TOR   ,TEQV  ,TNEQV ,TNOT  ,TSTAR ,
  1024.      +        TDSTAR,TPLUS ,TMINUS,TSLASH,TCNCAT,TDCNST,TLCNST,TRCNST,
  1025.      +        TPCNST,TCCNST,THCNST,TNAME ,TFIELD,TSCALE,TZEOS ,TCMMNT,
  1026.      +        TFMTKD,TENDKD,TERRKD,TKLAST
  1027.       PARAMETER (TZEOF = 1,TASSIG= 2,TBACKS= 3,TBLOCK= 4,TCALL = 5,
  1028.      +           TCLOSE= 6,TCOMMO= 7,TCONTI= 8,TDATA = 9,TDO   =10,
  1029.      +           TDIMEN=11,TELSE =12,TELSIF=13,TEND  =14,TENDFI=15,
  1030.      +           TENDIF=16,TENTRY=17,TEQUIV=18,TEXTER=19,TFUNCT=20,
  1031.      +           TFORMA=21,TGOTO =22,TIF   =23,TIMPLI=24,TINQUI=25,
  1032.      +           TINTRI=26,TOPEN =27,TPARAM=28,TPAUSE=29,TPRINT=30,
  1033.      +           TPROGR=31,TREAD =32,TRETUR=33,TREWIN=34,TSAVE =35,
  1034.      +           TSTOP =36,TSUBRO=37,TTHEN =38,TTO   =39,TWRITE=40,
  1035.      +           TINTEG=41,TREAL =42,TDOUBL=43,TCOMPL=44,TLOGIC=45,
  1036.      +           TCHARA=46,TDCMPL=47,TCOMMA=48,TEQUAL=49,TCOLON=50,
  1037.      +           TLPARN=51,TRPARN=52,TLE   =53,TLT   =54,TEQ   =55,
  1038.      +           TNE   =56,TGE   =57,TGT   =58,TAND  =59,TOR   =60,
  1039.      +           TEQV  =61,TNEQV =62,TNOT  =63,TSTAR =64,TDSTAR=65,
  1040.      +           TPLUS =66,TMINUS=67,TSLASH=68,TCNCAT=69,TDCNST=70,
  1041.      +           TLCNST=71,TRCNST=72,TPCNST=73,TCCNST=74,THCNST=75,
  1042.      +           TNAME =76,TFIELD=77,TSCALE=78,TZEOS =79,TCMMNT=80,
  1043.      +           TFMTKD=81,TENDKD=82,TERRKD=83,TKLAST=83)
  1044.  
  1045.  
  1046.         COMMON/TNAMES/TOKNAM
  1047.         CHARACTER*6 TOKNAM(-2:TKLAST)
  1048.  
  1049.         COMMON/OPTLCL/LHS,RHS,LPPOS,QUERY
  1050.         INTEGER LHS(134),RHS(134),LPPOS
  1051.         LOGICAL QUERY
  1052.  
  1053.         SAVE
  1054.  
  1055.         CHARACTER*6 SUBNAM
  1056.         INTEGER I
  1057.  
  1058.         INTEGER LENGTH
  1059.         EXTERNAL LENGTH,ZTOCAP,ZITOF
  1060.  
  1061.         IF (LPPOS.EQ.0 .OR. LHS(LENGTH(LHS)).NE.41) THEN
  1062.             CALL MISSUB
  1063.             EVTSUB=-1
  1064.         ELSE
  1065.             SUBNAM='      '
  1066.             CALL ZTOCAP(LHS(LPPOS+1))
  1067.             I=LENGTH(LHS(LPPOS+1))
  1068.             CALL ZITOF(LHS,LPPOS+1,LPPOS+I-1,SUBNAM,.FALSE.)
  1069.             I=-2
  1070.  200        IF (I.LT.TKLAST .AND. TOKNAM(I).NE.SUBNAM) THEN
  1071.                 I=I+1
  1072.                 GOTO 200
  1073.             END IF
  1074.             IF (TOKNAM(I).NE.SUBNAM) THEN
  1075.                 CALL BADSUB
  1076.                 EVTSUB=-1
  1077.             ELSE
  1078.                 EVTSUB=-2
  1079.                 RESULT=I
  1080.             END IF
  1081.         END IF
  1082.  
  1083.         END
  1084.