FTN4 SUBROUTINE LSCAN(KARS,I,J,K),92069-16061 REV.1912 781107 C C C************************************************************* C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C************************************************************* C C C SOURCE: 92069-18090 C RELOC: 92069-16060 C C C************************************************************ C C C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978 $$$$$$$$$$$$$$$$$$$$$ INTEGER INLU,ITTY,ILP,IDCB,JDCB,XEQ INTEGER DBNAM,DBLEV,DSNAM,DINAM,SELECT,SNAM INTEGER DSNUM,DINUM,PARM,LPARM,ECHO,QSERR INTEGER IMA,IB,IBSZ,SECNO,IEND,ISCAN LOGICAL BREAK INTEGER IPFLAG,IOFLAG,RMOTE LOGICAL BATCH,XQBCH INTEGER PAGCNT,LNCNT INTEGER PAGLEN,COLLIM REAL RRCNT REAL SELT,RSEC INTEGER IPTR REAL RCOUNT INTEGER S,R3,TRKNM,IDILU INTEGER R6 REAL ATOTAL INTEGER LIST,L,T,U INTEGER LEVSTR,LEVLEN INTEGER IBUFF INTEGER SS(7,100) C COMMON INLU(145),ITTY(145),ILP(145),IDCB(145),JDCB(144),XEQ(145) COMMON DBNAM(10),DBLEV(3),DSNAM(3),DINAM(3),SELECT(6),SNAM(3) COMMON DSNUM,DINUM,PARM(40),LPARM,ECHO,QSERR COMMON IMA(37),IB(896),IBSZ,SECNO,IEND,ISCAN COMMON BREAK COMMON IPFLAG,IOFLAG,RMOTE COMMON BATCH,XQBCH COMMON PAGCNT,LNCNT COMMON PAGLEN,COLLIM COMMON RRCNT COMMON SELT(64),RSEC COMMON IPTR COMMON RCOUNT COMMON S(15,50),R3,TRKNM,IDILU COMMON R6 COMMON ATOTAL(6,5) COMMON LIST(101,6),L(7),T(5),U(7,5) COMMON LEVSTR(66,5),LEVLEN(5) COMMON IBUFF(2048) C EQUIVALENCE (S,SS) C$$$$$$$$$$$$$$$$$$$ NOVEMBER 3,1978 $$$$$$$$$$$$$$$$$$$$$ DIMENSION KARS(1) C C VALUE OF K INDICATES ROUTINE IS PROCESSING C BLANKS(1), SYMBOLS(2), LITERALS(3), TERMINATORS(4) C K = 1 80 CONTINUE J = ISCAN - 1 99 J = J + 1 C GET CHARACTER FROM KARS STRING IF (J.LE.IEND) GOTO 70 CALL INPUT GO TO 80 C C C C BRANCH ON CHARACTER TYPE C 1 = IGNORE C 2 = ALPHABETIC CHARACTER C 3 = NUMBER OR SPECIAL SYMBOL C 4 = SEPARATOR OR TERMINATOR C 5 = ILLEGAL CHARACTER C 6 = START OF LITERAL C 70 CALL SGET(KARS,J,KAR) KAR = KAR - 37B GO TO (1,3,6,3,3,3,3,3, C ! " # $ % & ' C 1 3,3,3,3,4,3,4,3, C ( ) * + , - . / C 2 3,3,3,3,3,3,3,3, C 0 1 2 3 4 5 6 7 C 3 3,3,3,4,3,4,3,3, C 8 9 : ; < = > ? C 4 3,2,2,2,2,2,2,2, C @ A B C D E F G C 5 2,2,2,2,2,2,2,2, C H I J K L M N O C 6 2,2,2,2,2,2,2,2, C P Q R S T U V W C 7 2,2,2,3,3,3,3,5), KAR C X Y Z [ \ ] ^ C C BLANK 1 GO TO (99,24,99), K C LETTER 2 GO TO (21,99,99), K C DIGIT OR B-CHAR 3 GO TO (21,99,99), K C TERMINATOR ,/;/= 4 GO TO (23,24,99), K C OTHER CHARACTR 5 GO TO (25,25,99), K C QUOTE 6 GO TO (22,25,26), K C START OF SYMBOL 21 I = J K = 2 GO TO 99 C START OF LITERAL VALUE 22 I = J + 1 K = 3 GO TO 99 C TERMINATOR 23 I = J ISCAN = J + 1 C COMMA IF (KAR.EQ.13) K = 4 C SEMI-COLON IF (KAR.EQ.28) K = 5 C EQUALS IF (KAR.EQ.30) K = 6 C PERIOD IF(KAR .EQ. 15) K=7 RETURN C TERMINATE SYMBOL 24 J = J - 1 ISCAN = J + 1 RETURN C ILLEGAL CHARACTER 25 I = J ISCAN = J + 1 K = -1 RETURN C TERMINATE LITERAL VALUE 26 ISCAN = J + 1 CALL SGET(KARS,ISCAN,KAR) IF(KAR.EQ.42B) GO TO 30 J = J - 1 RETURN 30 CALL SMOVE(KARS,ISCAN+1,IEND,KARS,ISCAN) IEND = IEND - 1 GO TO 99 END $