📄 skiptp.for
字号:
SUBROUTINE SKIPTP(ITYPE,STRING,ICC1,ICC2,HOLFLG,KPOS,ILEV)*-----------------------------------------------------------------------* positions on the last character of a string of the requested type* input* ITYPE 1 = numeric* 2 = alpha* 3 = alpha-numeric* 4 = special* 5 = FORTRAN-name* 6 = expression ( no [,] at level 0 )* STRING string* ICC1 first ch, in string* ICC2 last - - -* HOLFLG if TRUE, hollerith included* output* KPOS position of last ch. of given type, if ICC1 is of that* type, otherwise = 0* ILEV level (including KPOS) relative to input level 0*----------------------------------------------------------------------- LOGICAL HOLFLG CHARACTER STRING*(*),STEMP*1 include 'convex.h' ILEV=0 KPOS=0 NCNT=0 ISSTR=0 ILBASE=-1 JC=ICC1-1 10 JC=JC+1 IF (JC.GT.ICC2) GOTO 999 STEMP=STRING(JC:JC)*--- skip blanks outside strings IF (STEMP.EQ.' '.AND.ISSTR.EQ.0) GOTO 10 IF(STEMP.EQ.'{') THEN*--- start of character string ISSTR=1 IF (.NOT.HOLFLG) THEN ISSTR=0 I=INDEX(STRING(JC:ICC2),'}') IF (I.EQ.0) GOTO 999 JC=I+JC-2 ENDIF GOTO 10 ELSEIF(STEMP.EQ.'}') THEN ISSTR=0 IF(ITYPE.EQ.6) THEN KPOS=JC ELSE GOTO 10 ENDIF ELSEIF(ITYPE.EQ.1) THEN IF (NUMCH(STEMP)) KPOS=JC ELSEIF(ITYPE.EQ.2) THEN IF (ALPHCH(STEMP)) KPOS=JC ELSEIF(ITYPE.EQ.3) THEN IF (ANUMCH(STEMP)) KPOS=JC ELSEIF(ITYPE.EQ.4) THEN IF (SPECCH(STEMP)) THEN KPOS=JC IF (STEMP.EQ.'(') THEN ILEV=ILEV+1 ELSEIF (STEMP.EQ.')') THEN ILEV=ILEV-1 ENDIF ENDIF ELSEIF(ITYPE.EQ.5) THEN IF (NCNT.EQ.0) THEN IF (ALPHCH(STEMP)) THEN KPOS=JC NCNT=NCNT+1 ENDIF ELSEIF (ANUMCH(STEMP)) THEN KPOS=JC ENDIF ELSEIF(ITYPE.EQ.6) THEN IF (KPOS.EQ.0.AND..NOT.(ANUMCH(STEMP).OR.STEMP.EQ.'('.OR.STEMP. + EQ.'+'.OR.STEMP.EQ.'-'.OR.STEMP.EQ.''''))GOTO 999 IF (STEMP.EQ.'(') THEN ILEV=ILEV+1 ELSEIF (ILBASE.LT.0) THEN ILBASE=ILEV ENDIF IF (STEMP.EQ.')') ILEV=ILEV-1 IF ((STEMP.NE.','.OR.ILEV-ILBASE.GT.0).AND.ILEV.GE.0) KPOS=JC ENDIF IF (KPOS.EQ.JC) GOTO 10 999 END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -