Fortran Coder

标题: 在pscad里编程遇到error#8093,error#6511, [打印本页]

作者: 懒癌症患者    时间: 2018-11-10 16:26
标题: 在pscad里编程遇到error#8093,error#6511,
[Fortran] 纯文本查看 复制代码
      #LOCAL INTEGER N
      #LOCAL INTEGER L

      N=$dim      
      L=$ttd
      
      #LOCAL INTEGER  T1 $dim
      #LOCAL REAL M $dim
      #LOCAL REAL Uk $dim
      #LOCAL REAL Ukk $ttd
      #LOCAL REAL M1
      #LOCAL REAL N1
      
     
      IF ($CLK>0.9) THEN
      
      DO I=1, N
      Uk(I)=$Us1(I)
      
      END DO
      
      
      DO K=1,N
      Ukk(K)=K
      Ukk(N+K)=Uk(K)
      END DO

      IF($Iarm>0) THEN
        Hld1=1.0
      
        DO I=1, N
      
        IF ($Ts1(I)==1) THEN
          Ukk(N+I)=Ukk(N+I)*Hld1
        ENDIF
        END DO
     
        DO I=1,N-1
          !  Flag1=1
          DO J=1, N-I
           IF (Ukk(N+J)>Ukk(N+J+1)) THEN
             M1=Ukk(J+1)
             N1=Ukk(N+J+1)
             Ukk(J+1)=Ukk(J)
             Ukk(J)=M1
             Ukk(N+J+1)=Ukk(N+J)
             Ukk(N+J)=N1
             Flag1=0
           ENDIF
          END DO
         !  IF (Flag1==1) THEN
          !  EXIT
           !  ENDIF
        ENDDO
          DO I=1, N
            T1(I)=0
          ENDDO
          DO I=1,$Unum
           M(I)=Ukk(I)
           T1(M(I))=1
          END DO
      ENDIF
      
      IF($Iarm<0) THEN
        Hld=1.0
        DO I=1, N
        
        IF($TS1(I)==1) THEN
          Ukk(N+I)=Ukk(N+I)*Hld
        ENDIF
        END DO
        
        DO I=1, N-1
        Flag1=1
         DO J=1, N-I
         IF (Ukk(N+J)>Ukk(N+J+1)) THEN
             M1=Ukk(J+1)
             N1=Ukk(N+J+1)
             Ukk(J+1)=Ukk(J)
             Ukk(J)=M1
             Ukk(N+J+1)=Ukk(N+J)
             Ukk(N+J)=N1
             Flag1=0
          ENDIF
         END DO
          !  IF (Flag1==1) THEN
           !  EXIT   
             !  ENDIF
        ENDDO
         DO I=1, N
          T1(I)=0
         ENDDO
         DO I=1, $Unum
           M(I)=Ukk(N+1-I)
         T1(M(I))=1
         END DO
      ENDIF
        DO I=1, N
        $TS1(I)=T1(I)
        END DO
      
      ENDIF

作者: 懒癌症患者    时间: 2018-11-10 16:28
本帖最后由 懒癌症患者 于 2018-11-10 16:30 编辑

上面是代码,$是值替换前缀,就是将dim的值赋给N,由于在pscad编写,可能格式有些不一样,用的是ivf编绎器
Description
error #8093: A do-variable within a DO body shall not appear in a variable definition context.   [I]
Description
error #6511: This DO variable has already been used as an outer DO variable in the same nesting structure.   [I]
这是错误描述,说双重循环出问题
作者: fcode    时间: 2018-11-11 01:25
我试了一下你给出的代码段,并没有出现你的问题。
作者: 懒癌症患者    时间: 2018-11-12 20:04
fcode 发表于 2018-11-11 01:25
我试了一下你给出的代码段,并没有出现你的问题。

谢谢,我后来查了下是其他元件代码出问题,报错报在这段上
作者: 懒癌症患者    时间: 2018-11-15 14:22
本帖最后由 懒癌症患者 于 2018-11-15 14:25 编辑
fcode 发表于 2018-11-11 01:25
我试了一下你给出的代码段,并没有出现你的问题。

你好,后来我进行调试的时候,总是在
DO I=1,$Unum
M(I)=Ukk(I)
T1(M(I))=1
ENDDO
出现断点,M(I)=Ukk(I)还有T1(M(I))=1两行出现 断点,请问这两行语法不对吗
出现提示>    MMC_dc.exe!MAINDYN(INTEGER(4)  NUM ) 行 371    未知







欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2