以梦为马,不负韶华

搜索
查看: 4054|回复: 2
收起左侧

[求助] PRO II的Calculator的编程逻辑

[复制链接]

 成长值: 36970

发表于 1970-1-1 08:00:00 显示全部楼层 |阅读模式
我是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”
主要是语言格式上,而不是代码要实现的意义。

谢谢大家的帮忙。



                               
登录/注册后可看大图
该贴已经同步到 sjlnb的微博

评分

参与人数 1韶华币 +1 收起 理由
飞奔的蜗牛77 + 1

查看全部评分

 成长值: 36970

 楼主| 发表于 1970-1-1 08:00:00 显示全部楼层
有没有知道。100存在的意义吗?

点评

R(100)大于0时执行100后面的语句不执行200,当R(100)=1时执行完100后的语句再执行200,我的理解是这样  详情 回复 发表于 2014-10-11 16:49
我没有学过Fortran,但对这个题目的个人理解的是:100和200只是表示这个语句段的位置,就好像门牌号一样,在 “if“ 语句中,你需要对各个不同的条件选择不同的语句执行,而此时,100和200就表示这个语句段的名称  详情 回复 发表于 2014-9-21 16:01
回复 支持 0 反对 1

使用道具 举报

发表于 1970-1-1 08:00:00 显示全部楼层
找找度娘。                        
回复 支持 0 反对 1

使用道具 举报

发表于 1970-1-1 08:00:00 显示全部楼层
sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?

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

使用道具 举报

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

点评

嗯,谢谢大家的热心答复~长知识了  详情 回复 发表于 2017-2-5 09:49
回复 支持 反对

使用道具 举报

发表于 1970-1-1 08:00:00 显示全部楼层
sjlnb 发表于 2014-8-11 08:31
有没有知道。100存在的意义吗?

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

使用道具 举报

发表于 1970-1-1 08:00:00 显示全部楼层
100是语句代号,IF语句的转移代号,如果R(100)大于0时执行代号100的语句,否则执行下一行语句。
回复 支持 反对

使用道具 举报

 成长值: 36970

 楼主| 发表于 1970-1-1 08:00:00 显示全部楼层
davedong 发表于 2014-9-26 10:05
这是FORTRAN77中循环语句的一种固定格式。从GOTO 100这一行到100这一行之间所有的语句是一个循环。程序较小 ...

嗯,谢谢大家的热心答复~长知识了
回复 支持 反对

使用道具 举报

发表于 1970-1-1 08:00:00 显示全部楼层
R(100)的初值是0吧,
这段程序的意思应该是,数组R中有数据时,(假设数据是大于0的,那么有数据就大于0)。则执行1000CALL SRVSTR(SCMR,R(1),S14R,1,5)。
如果数组R中没有数据,则将数组R进行赋值。
回复 支持 反对

使用道具 举报

不想打字就选择快捷回复吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|以梦为马,不负韶华

GMT+8, 2025-2-10 07:59

Powered by 以梦为马,不负韶华

© 2024-2099 Meng.Horse

快速回复 返回顶部 返回列表