⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 specct.for

📁 这是一个Linux下的集成开发环境
💻 FOR
字号:
      SUBROUTINE SPECCT(MODE,ISTR,NTOT,ICT,IREF,IERR)*-----------------------------------------------------------------------*  Extracts information on special characters from strings*  Input*  MODE     = 1 : treat a string which is to be replaced*           = 2 : treat a replacement string*  ISTR     = string ref. (relative to KKYSTA, KKYEND)*  Output*  NTOT     = total no. of special characters*  ICT (I)   = count for character I (in SPCHAR)*  IREF(J,I)= if MODE = 1 :*             for the Jth character I, total count*             if MODE = 2 :*             for the Jth character I, count in [...]**--- important: special characters inside '...' not counted !**  IERR     = 0 : all OK*           = 1 : buffer overflow*           = 2 : unclosed [...]*           = 3 : number in [...] out of range*           = 4 : unclosed '...' inside string*-----------------------------------------------------------------------      include 'param.h'      include 'keycom.h'      DIMENSION ICT(*),IREF(MXNAME/20,*)      include 'convex.h'      IERR=0      NTOT=0      INSTR=0      DO 10 I=1,7         ICT(I)=0   10 CONTINUE      J=KKYSTA(ISTR)-1      KEND=KKYEND(ISTR)   20 CONTINUE      J=J+1      IF (J.GT.KEND) GOTO 30      IF(SKYSTR(J:J).EQ.'''')  INSTR=1-INSTR      IF (INSTR.NE.0) GOTO 20      I=INDEX(SPCHAR,SKYSTR(J:J))      IF(I.EQ.7)  THEN*--- '>' found, look for ')' to follow         IF (J.EQ.KEND)  THEN            I=0         ELSEIF (SKYSTR(J+1:J+1).EQ.')')  THEN            J=J+1         ELSE            I=0         ENDIF      ENDIF      IF(I.GT.0)  THEN*--- check buffer size         IF (ICT(I).EQ.MXNAME/2)  THEN            IERR=1            GOTO 999         ENDIF         NTOT=NTOT+1         ICT(I)=ICT(I)+1         IF (MODE.EQ.1)  THEN            IREF(ICT(I),I)=NTOT         ELSEIF (J.LT.KEND.AND.SKYSTR(J+1:J+1).EQ.'[')  THEN            J=J+1            IF (J.EQ.KEND)  THEN               IERR=2               GOTO 999            ELSEIF (SKYSTR(J+1:J+1).EQ.']')  THEN               IREF(ICT(I),I)=ICT(I)            ELSE*--- get integer in [...]               CALL GETINT(SKYSTR,J+1,KEND,KFCH,KLCH,NN)               IF (KFCH.EQ.0.OR.NN.EQ.0)  THEN                  IERR=3                  GOTO 999               ELSE                  IREF(ICT(I),I)=NN                  IF (KLCH.EQ.KEND)  THEN                     IERR=2                     GOTO 999                  ENDIF                  J=KLCH+1                  IF (SKYSTR(J:J).NE.']')  THEN                     IERR=2                     GOTO 999                  ENDIF               ENDIF            ENDIF         ELSE            IREF(ICT(I),I)=ICT(I)         ENDIF      ENDIF      GOTO 20   30 CONTINUE      IF(INSTR.NE.0)  IERR=4  999 END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -