2017-10-01 12 views
1

モラル・フリー・フォーマットのRPG手法を試してみたいので、実際にコードを泳ぐのではなく、実際に維持することができます。私は、サービスプログラムとモジュールを作成し、コードを分離することでかなりうまくやっていました。新しいDclとCtlのすべてのステートメントを使って、実際に書式を取り除くことにしました。フリー・フォーマットRPGリニア・メイン・プログラムへのパラメータ渡しの問題

「ILE RPGのプログラミング」という本から次のコードをコピーするだけで、プログラムを呼び出してパラメータを渡すと、値は常にプログラム内で0になります。入力パラメータが表示されないようです。これはPTFとRDiのバージョン管理によるものですか、何か愚かなものがありませんか?私はV7R1M0にあり、RDiはバージョン9.5.1.0です。

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; 

答えて

4

プログラムコードはOKです。私はあなたがコマンドラインからパラメータを渡すのが面倒だと思う。すべてを2バイトの整数であるint(5)として定義しました。

RPGプログラム(特にタイプ文字でないもの)にパラメータを渡す最も安全な方法は、コマンドを使用することです。

CMD PROMPT('Temperature') 

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

注:IBMが言語間で一貫性を持たせなかったことは残念です。 * CMDのINT2 = RPGのINT(5)

+0

ありがとうございました....後ろのことで、それは私の部分でかなり愚かでした.... – Jeff

関連する問題