代码之家  ›  专栏  ›  技术社区  ›  Jeff

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

  •  1
  • Jeff  · 技术社区  · 7 年前

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

       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;
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Mihael    7 年前

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

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