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的微博 有没有知道。100存在的意义吗? 找找度娘。 sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?
我没有学过Fortran,但对这个题目的个人理解的是:100和200只是表示这个语句段的位置,就好像门牌号一样,在“if“语句中,你需要对各个不同的条件选择不同的语句执行,而此时,100和200就表示这个语句段的名称或者位置吧,在这里你改成其他的数字应该也是可以用的。具体对不对,还请其他人来指正吧。 这是FORTRAN77中循环语句的一种固定格式。从GOTO 100这一行到100这一行之间所有的语句是一个循环。程序较小时可以方便程序猿直观地认识各程序段的顺序与层次,不过程序一旦大起来,编写和DEBUG就比较坑爹了。所以到了F90,这个语句就不再是必要的了。 sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?
R(100)大于0时执行100后面的语句不执行200,当R(100)=1时执行完100后的语句再执行200,我的理解是这样 100是语句代号,IF语句的转移代号,如果R(100)大于0时执行代号100的语句,否则执行下一行语句。 davedong 发表于 2014-9-26 10:05
这是FORTRAN77中循环语句的一种固定格式。从GOTO 100这一行到100这一行之间所有的语句是一个循环。程序较小 ...
嗯,谢谢大家的热心答复~长知识了 R(100)的初值是0吧,
这段程序的意思应该是,数组R中有数据时,(假设数据是大于0的,那么有数据就大于0)。则执行1000CALL SRVSTR(SCMR,R(1),S14R,1,5)。
如果数组R中没有数据,则将数组R进行赋值。
页:
[1]