首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递给自由格式的RPG线性主程序的问题

将参数传递给自由格式的RPG线性主程序的问题
EN

Stack Overflow用户
提问于 2017-10-01 16:58:54
回答 1查看 1.7K关注 0票数 1

我正在尝试测试模块化的免费格式RPG方法,这样我们就可以开始实际地维护我们的代码,而不是在它中游动。当我决定尝试使用所有新的Dcl和Ctl语句来真正删除格式时,我在创建服务程序和模块以及分离代码方面做得很好。

我只是简单地复制了“ILE中的编程”一书中的以下代码,但是当我调用它并传递参数时,程序中的值总是为0。就好像它没有看到输入参数。这是由于PTF和RDi版本控制造成的,还是我遗漏了一些愚蠢的东西?我在V7R1M0工作,RDi是9.5.1.0版

代码语言:javascript
复制
   ctl-opt Main(Driver);

   dcl-pr Driver Extpgm('THISPGM');
       *n int(5);
   end-pr;

   Dcl-pr Celsius int(5);
     *n int(5);
   END-PR;

   dcl-proc Driver;
     Dcl-pi *n;
       Englishtemp int(5);
     END-PI;

   dcl-s Message char(50);
   dcl-S Metrictemp int(5);
   dcl-s State varchar(8);
   Metrictemp=Celsius(Englishtemp);
   Select;
     When Metrictemp<0;
       State='solid';
     When Metrictemp=0;
       State='Freezing';
     When Metrictemp=100;
       State='boiling';
     When Metrictemp>100;
       State='gaseous';
     other;
       State='liquid';
   ENDSL;

   Message='At '+%char(Englishtemp)+' degrees (' + %Char(Metrictemp)+
   ' Celsius), water is ' + State+'.';

       DSPLY Message;
       Return;
   END-PROC Driver;

   dcl-proc Celsius;
     dcl-pi *n int(5);
       Fahrenheit int(5);
     END-PI;
     dcl-s Temperature int(5);
     eval(h) Temperature = (5/9) * (Fahrenheit - 32 );
     Return Temperature;
   END-PROC Celsius;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 05:52:57

程序代码没问题。我认为您在从命令行传递参数时出错了。您将所有内容定义为int(5),它是一个带有2个字节的整数。

将参数传递给RPG程序(特别是那些不具有字符类型的程序)的最安全方法是使用命令。

代码语言:javascript
复制
CMD  PROMPT('Temperature')

PARM KWD(TEMP) TYPE(*INT2) PROMPT('Temperature in °F')

注意:令人遗憾的是,IBM没有使其在所有语言中保持一致。*INT 2,CMD = INT(5)在RPG中

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46514694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档