sjlnb 发表于 2014-8-8 08:55:08

PRO II的Calculator的编程逻辑

我是PRO II的初学者。再看合成氨例子的时候,有一段Calculator的Fortran代码,不是很懂:

“   IF (R(100).GT.0) GOTO 100
    R(1)=P(1) $H2
    R(2)=P(2) $N2
    R(3)=P(3) $Ar
    R(4)=P(4) $CH4
    R(5)=P(5) $NH3
    R(100)=1
    GOTO 200
100 CONTINUE
    CALL SRVSTR(SCMR,R(1),S14R,1,5)
200 CONTINUE
RETURN”

就是定义了某个物流的五种组分含量为P(1)-P(5),然后想把这五个值传到另外一个物流里。
我一直不懂数组里的R(100)出现在代码里的意义。R(100)的初值是什么?(R(100)>0不是很明显的吗?之后一直是R(100)=1吗?,R(1)=P(1)等六行的意义是什么?难道SRVSTR(SCMR,R(1),S14R,1,5)不能解决赋值问题吗?)

什么时候执行100,什么时候执行200呢?

PRO II自带的合成氨Case 也有Fortran编程。也很迷糊:
“             V(1) = P(1) - P(2) - P(3)
             IF (V(1) .LE. 0.001)V(1) = 0.001
             CALL SRXSTR(SMR, V(1), 31X)
      RETURN”
主要是语言格式上,而不是代码要实现的意义。

谢谢大家的帮忙。


http://meng.horse/xwb/images/bgimg/icon_logo.png 该贴已经同步到 sjlnb的微博

sjlnb 发表于 2014-8-8 08:55:08

有没有知道。100存在的意义吗?

飞奔的蜗牛77 发表于 2014-8-8 08:55:08

找找度娘。                        

江海天 发表于 2014-8-8 08:55:08

sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?

我没有学过Fortran,但对这个题目的个人理解的是:100和200只是表示这个语句段的位置,就好像门牌号一样,在“if“语句中,你需要对各个不同的条件选择不同的语句执行,而此时,100和200就表示这个语句段的名称或者位置吧,在这里你改成其他的数字应该也是可以用的。具体对不对,还请其他人来指正吧。

davedong 发表于 2014-8-8 08:55:08

这是FORTRAN77中循环语句的一种固定格式。从GOTO 100这一行到100这一行之间所有的语句是一个循环。程序较小时可以方便程序猿直观地认识各程序段的顺序与层次,不过程序一旦大起来,编写和DEBUG就比较坑爹了。所以到了F90,这个语句就不再是必要的了。

化工草堂 发表于 2014-8-8 08:55:08

sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?

R(100)大于0时执行100后面的语句不执行200,当R(100)=1时执行完100后的语句再执行200,我的理解是这样

87737352 发表于 2014-8-8 08:55:08

100是语句代号,IF语句的转移代号,如果R(100)大于0时执行代号100的语句,否则执行下一行语句。

sjlnb 发表于 2014-8-8 08:55:08

davedong 发表于 2014-9-26 10:05
这是FORTRAN77中循环语句的一种固定格式。从GOTO 100这一行到100这一行之间所有的语句是一个循环。程序较小 ...

嗯,谢谢大家的热心答复~长知识了

295610399 发表于 2014-8-8 08:55:08

R(100)的初值是0吧,
这段程序的意思应该是,数组R中有数据时,(假设数据是大于0的,那么有数据就大于0)。则执行1000CALL SRVSTR(SCMR,R(1),S14R,1,5)。
如果数组R中没有数据,则将数组R进行赋值。
页: [1]
查看完整版本: PRO II的Calculator的编程逻辑