C C36CF1 SUBROUTINE C36CF1(IV, IVP, IV1, NERR) C C36CF1 - INFORMATION RETRIEVAL SYSTEM, CONVERT LOGICAL EXPRESSION C C THIS SUBROUTINE IS CALLED UPON TO SCAN AND CONVERT A TEXTUAL C LOGICAL EXPRESION TO POLISH FORM NOTATION FOR LATER EVALUATION. C DIMENSION IV(1), IV1(40) DIMENSION ICHRV(6),IASM(7,3),ISTKV(10),IOPPV(7) C C UPDATED FOR CONVERSION OF EXPLANTION PT TO OR CHARACTER C DATA ICHRV/95,38,124,40,41,0/,IASM/12,2*-1 10,21,-20,-50,43, 3*-30,21,2*-30,43,-40,2*11,-40,33,50,40/, 2ISTKE/10/, IOPPV/7,6,5,2,3,4,1/ C C C INITIALIZE FOR SCAN C NERR = 0 ILEP = IVP IV1P = 1 ICPE = 80 CALL ICHPS(IV1,IV1P,ICP) ISTKV(1)=7 ISTKP=1 IS=1 C C FETCH NEXT CHARACTER, LOCATE IN STATE/ACTION MATRIX C 100 CALL ICSGC(IV,ILEP,ILEP,ICHR) IF (ICHR .EQ. 32) GO TO 100 ! BLANK C IR=IVLUF(ICHR,ICHRV,6) IF (IR) 101,101,102 101 IR=7 102 I=IASM(IR,IS) IAS=IABS(I) IACT=IAS/10 IS=IAS-10*IACT IF (I) 103,103,104 103 NERR = IACT+48 RETURN 104 GO TO (110,118,110,130,110),IACT C C PROCESS NORMAL OPERATOR - CHECK TO FORCE FROM STACK C 110 IOPP=IOPPV(IR) 112 I=ISTKV(ISTKP) JOPP=IOPPV(I) IF (IOPP-JOPP) 114,114,118 114 IF (ICP-ICPE) 116,115,115 115 NERR = 54 RETURN 116 CALL PNXCH(254-I) ISTKP=ISTKP-1 GO TO 112 C C CURRENT OPERATOR GOES TO STACK (RIGHT PAREN AND END STRING SPECIAL) C 118 IF (IR-5) 120,124,126 120 ISTKP=ISTKP+1 IF (ISTKP-ISTKE) 122,122,121 121 NERR = 55 RETURN 122 ISTKV(ISTKP)=IR GO TO 140 124 ISTKP=ISTKP-1 IF (ISTKV(ISTKP+1)-4) 125,140,125 125 NERR = 298 RETURN 126 IF (ISTKP-1) 127,128,127 127 NERR = 332 RETURN 128 IF (ICP-ICPE) 129,115,115 129 CALL PNXCH(0) RETURN C C PROCESS LOGICAL OPERAND C 130 CONTINUE ILEP = ILEP - 1 CALL C36CF2 (IV, ILEP, NERR) IF (NERR .NE. 0) RETURN C C MOVE TO NEXT STATE C 140 GO TO 100 C END