我是AS400的新手,我想知道如何在rpgle的运行时提供输入?

时间:2017-05-24 09:15:09

标签: rpgle

我想将温度从华氏温度转换为摄氏温度。在运行时它应该询问华氏温度,然后显示摄氏温度的等效温度。

2 个答案:

答案 0 :(得分:2)

与其他语言不同,RPG专为商业计划而构建。因此它没有内置的控制台IO,如C或Java。相反,用户交互传统上是通过称为设备文件的对象来模仿数据库IO。但是,有一个操作码可用于访问外部消息队列,并可以发送消息并接收回复。此操作码为DSPLY。它非常有限,您只能显示52个字符的消息,但可以用于此目的。您希望用户IO的真正解决方案是涉及显示文件。但是要以类似于其他语言的方式得到类似于你所要求的东西,你可以写下以下内容:

   ctl-opt Option(*SrcStmt : *NoDebugIo: *NoUnref)
           DftActGrp(*No) ActGrp(*New)
           Main(temprature);

   dcl-proc temprature;

     dcl-s degreesC       Char(15) Inz('');
     dcl-s degreesF       Char(15) Inz('');

     dsply 'Enter temprature in degrees F' '*EXT' degreesF;
     degreesC = %char(
       (%dec(degreesF:15:0) - 32) * 5 / 9
     );
     dsply ('Temprature in degrees C is: ' + degreesC);

     return;
   end-proc;

第一个dsply有三个参数,消息,消息队列和回复变量(必须是字符变量)。第二个dsply只有一个消息,如果括在括号中,它可以是一个表达式。没有回复,默认情况下它会发送到* EXT消息队列以进行交互式作业。

注意: DSPLY仅对测试和调试非常有用,并且只有有限的实用性。面向用户的程序将使用显示文件或其他方式与用户交互,例如通过使用CGIDEV2库的浏览器。

答案 1 :(得分:0)

一个好的开始是查看RPG Manual然后开始研究DDS。那里有很多文件。只需搜索" iseries"那么你的主题。