• ベストアンサー

RPGのプログラム感のパラメーター

サブプロにパラメーターを渡し、処理をさせたいのですが、 サブプロは曜日計算をさせるもので、 パラメーターはA(4桁の西暦),B(2桁の月),C(2桁の日付)の変数で、 それぞれ桁数が4,2,2小数点桁数はすべて0です。 この3つを渡し、処理をさせWEEKという変数に曜日を算出させ、元のプログラムにその値を返したいのですが、受け渡しと値の戻し方がわかりません。 受け渡し側のパラメーターの宣言の仕方、CALLの仕方、WEEKの値の受け取り方 受け渡される側のパラメータの宣言の仕方、値の戻し方を教えてください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hiratti
  • ベストアンサー率32% (8/25)
回答No.4

No2です。 ABCの変数が数字項目でしたね。訂正します。 受け渡しプログラム IPRMWEK  DS I           1 40 A   (INPUT パラメータ 西暦) I           5 60 B   (INPUT パラメータ 月) I           7 80 C   (INPUT パラメータ 日) I           9 ?  WEEK (OUTPUT パラメータ 曜日) C      CALL 'SBWEK00'   (サブルーチンSBWEK00 呼び出し) C      PARM   PRMWEK   (サブルーチン受け渡しパラメータ) 受け渡されるプログラム(SBWEK00) IPRMWEK  DS I           1 40 A   (INPUT パラメータ 西暦) I           5 60 B   (INPUT パラメータ 月) I           7 80 C   (INPUT パラメータ 日) I           9 ?  WEEK  (OUTPUT パラメータ 曜日) C     *ENTRY PLIST      (受け取りパラメータ宣言) C         PARM PRMWEK   (受け取りパラメータ)

hisajiro
質問者

お礼

ありがとうございます。 おかげさまで解決できました。 パラメーターに関して扱うのが初めてで、いろいろ自分で調べたりしましたが、分かりやすい説明のおかげでやっとわかった気がします。 また何かありましたら、よろしくお願い致します。

その他の回答 (3)

  • hiratti
  • ベストアンサー率32% (8/25)
回答No.3

> この3つを渡し、処理をさせWEEKという変数に曜日を算出させ、元のプログラムにその値を返したいのですが、受け渡しと値の戻し方がわかりません。 ちょっと質問の内容が理解できない部分がありましがた、私なりに解釈しました。 受け渡しプログラム IPRMWEK  DS I           1 4 A   (INPUT パラメータ 西暦) I           5 6 B   (INPUT パラメータ 月) I           7 8 C   (INPUT パラメータ 日) I           9 ? WEEK (OUTPUT パラメータ 曜日) C      CALL 'SBWEK00'   (サブルーチンSBWEK00 呼び出し) C      PARM   PRMWEK   (サブルーチン受け渡しパラメータ) 受け渡されるプログラム(SBWEK00) IPRMWEK  DS I           1 4 A   (INPUT パラメータ 西暦) I           5 6 B   (INPUT パラメータ 月) I           7 8 C   (INPUT パラメータ 日) I           9 ? WEEK  (OUTPUT パラメータ 曜日) C     *ENTRY PLIST      (受け取りパラメータ宣言) C         PARM PRMWEK   (受け取りパラメータ) 後はSBWEK00にてWEEKに曜日をセットすれば受け渡し側のプログラムのWEEKに値がセットされます。尚、受け渡し側・受け渡される側の変数名は違っても構いません。変数の桁数だけ合っていればOKです。もし理解できなかったり、質問の意図が異なる時は言ってください。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

#1です。やっぱり見当違いでしたね。すみません。 私はRPGはまったく分からないのですが、参考URLにはほかの言語と対比してプログラムが載っているので参考にしてはどうでしょうか? http://www2.odn.ne.jp/~cbn33260/AS400/index.htm http://www2.odn.ne.jp/~cbn33260/AS400/ile.htm

hisajiro
質問者

お礼

ありがとうございます。 今後の参考とさせていただきます。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

「RPG」と「サブプロ」の意味が分からないのでまったく見当違いかもしれませんが... 「サブプロ」は「サブルーチン」のことですか?だとすると、まずは「サブプロ」ではなく「ファンクション」つまり「関数」を使うようにした方がいいと思います。 開発に用いている言語もわからないので具体的な宣言はわかりませんが、ファンクションの戻り値にweekを指定して呼び出し側で nWeek = (関数名)(パラメータ) のように呼び出せば計算した値を受け取れるかと思います。 VBであれば下のような感じです Function aaaa(y As Integer, m As Integer, d As Integer) As Integer week = 10 aaaa = week End Function Sub test() week = aaaa(1994, 10, 10) MsgBox week End Sub

hisajiro
質問者

補足

内容がわかりにくくて、すみません。 RPGとはAS/400で開発する言語で、サブプロはサブプログラムのことです。

関連するQ&A

  • C言語 関数のパラメータがわかりません

    C言語 関数のパラメータ(値渡し?)がよくわかりません。 意味として、「呼出し側から関数へのデータ受け渡しにはパラメータを使用します。パラメータとは関数名の後のカッコ内に書かれているデータ受け渡し用の変数を指します。」とあり、どのような動きになっているのかイメージがつきません。 どなたか教えていただけないでしょうか?

  • パラメータの渡し方

    画面Aを開くとき、画面Xから開いたのか画面Yから開いたのかがわかるように画面A側でパラメータを受け取りたいです。 (そのパラメータによって色々と処理を分岐させたい) Formのロードやコンスタクトは引数がないわけですが、パラメータが1個あるメソッドとしてオーバーロードして、PUBLICな変数にパラメータを入れておいて、Loadが走ったあとはその情報をみて色々処理を分岐させるなどをすればいいのでしょうか? (もっとスマートな方法があるような気がしています。) 宜しくお願いいたします。

  • 実行シェルからCOBOLへパラメータを渡したい。

    実行シェルで変数に値を直書きで代入し、その変数の値をCOBOL側で使用したいのですが、シェルでの宣言のやり方とCOBOLでの受け取り方が分かりません。 どなたか分かる方お返事お願いします。。。

  • 小数点の表示について

    Long型の変数の値を、 テキストボックスに表示しているのですが、 「10」の値を表示する時に 「10.000」と小数点以下3桁まで表示したいと考えております。 複数の値を並べて表示するので 桁数を合わせて見やすくしたいのですが なにか簡単な方法で実現できないでしょうか? 宜しくお願いします。 現在はFormat関数を利用しています Format(変数名, "##.###") 当然ですが「10.000」とは表示されません。

  • 文字列変換の際に小数部の桁数を調整したい

    Visual Basic 2005で開発を行っています。 整数部や小数部の桁数チェックの為、Decimal型を一度String型へ変換し、 その後チェックを行っています。 しかし、「1.000」などという値でチェックが行われた時、ToString()した 時点でString型変数へ格納される値が「1.000」のままなので、チェックで 弾かれてしまいます。 「1.000」がチェック対象となった時、チェックする値は「1」となって欲しく、 「1.001」がチェック対象となった時は「1.001」のままであって欲しいです。 整数部も小数部も何桁来るかは分かりません。 (Decimalで収まる桁数であることは間違いありません) 先のように不要な小数部について除去されるような命令やフォーマット指定が 分からず悩んでいます。 どなたかご教示下さい。

  • 変数に格納できる桁数に制限はあるの?

    スカラー変数に格納できる桁数に制限はあるのでしょうか? 制限があるとすれば、どうすれば解除できるのでしょうか? 具体的には下記のような手順です。 小数15位まである数値(整数部は3桁)を変数($hoge)に代入する。 $hoge = 123.123456789012345; 次に、この変数を他の変数($fuga)に代入する。 $fuga = $hoge; さらにこの変数をSmarthに渡してブラウザに表示させると、小数点以下が12桁までしか表示されません。 どうすれば15桁をそのまま表示させることができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • バッチファイルの変数をパラメーター化

    お世話様です。 WindowsXP環境に下記バッチファイルがあります。 バッチコード内は以下の通りです。 ------------------------------------------------ set TARGET_FILE=test.txt ------------------------------------------------ この【TARGET_FILE】という変数内に格納されている【test.txt】という値を パラメーターとしてあるVBS内の変数Aがそれを受け取って処理をする・・・。 という事は可能でしょうか? 上記バッチは数種類あり、【TARGET_FILE】変数内の値がそれぞれ違います。 VBSコード内は以下の通りです。 ------------------------------------------------ Option Explicit Dim FILE FILE = ○○○←ここに上記バッチ内の【TARGET_FILE】変数の値を受け取る。 MsgBox FILE ------------------------------------------------ 各バッチは上記VBSで実行したいのです。 Msgbox程度の処理は当然バッチでも可能ですが、何個もVBSを作成するのは厳しいので、 パラメーターが可能であれば、このVBS1個で済みます。 ご存知の方がおりましたら、お知恵を拝借しても宜しいでしょうか? 何卒宜しくお願い致します。

  • パラメータとhtmlの再描写の関係について

    パラメータとhtmlの再描写の関係について 現在、jqueryを使って、getによるリクエストを送信し、コールバック関数でHTMLの再描写を行っているのですが、html()ではなく、replaceなどで一部書き換えると、サーバー側にパラメータが伝わらず困っております。 具体的には、 var url = BASE_URL + "?action=true&user_id="+user_id+"&view_day="+view_day+"&time="+noCache; のように変数view_day等をサーバー側に送るようにし(noCacheはダミー変数)、 そのコールバック関数で、 $("#contents").html(obj.data); とすると、htmlは書き換えられ、サーバー側(php)でも、目的のview_dayの値が取ることができ、うまくいきます。 しかし、 $( 'div#main div#info-container' ) . replaceWith( $('div#main div#info-container',$(obj.data)) ); のようにコールバック関数の引数(obj)を使って、一部を書き換えようとすると、 パラメータとしてview_dayには変化があっても、サーバー側ではその変化した値をとってくれません。 firebugなどではview_dayは3を送っていることが確認できても、html()を使ってhtmlを再描写しない限りは、3を受け取らず、その前に受け取った2のままになってしまったりして、思ったような動作をしてくれません。 僕としては、 firebugで確認しても、正しいパラメータが送られ、ちゃんとリクエストが発行されているのだから、サーバー側でその値は受け取れるはず と考えているのですが、この際にhtmlの描写は関係してくるのでしょうか? できれば、描写に関係なく、パラメータを送れば、そのパラメータがサーバー側で受け取れるようにしたいのですが、なかなかよい方法が見つからないので、ご教授いただけますと嬉しく思います。 よろしくお願い致します。

  • C言語のStatic変数について

    現在、C言語の勉強しながらゲームプログラムにチャレンジしています。 二つの関数で利用する変数を作りたかったので、Static宣言された変数を容易しました。 ですが、この変数、一度処理が終わると当面使わない変数なのです。 (ただし、処理途中は何度も呼び出されるので値は保持しなければいけません) よって、メモリ上に延々居座られるのが邪魔に思えて仕方ありません。 実際、大したことないだろうとは思うのですが。 このStaticで宣言された変数を、自分の好きなタイミングでメモリ上から解放するような処理はできませんか? もしくはメモリ上に居座ることのない処理の仕方などありましたら、 考え方を教えていただけるとうれしいです。よろしくお願いします。

  • C++でのdouble型データの精度

    こんにちは。 コンパイラは、Borland C++ Compiler 5.5 を使っています。 表題の「精度」とは、 正確な値が保証される、「整数部分の桁数」+「小数点以下の桁数」 の事です。 普通、double型データの「精度」は、16桁であると認識しています。 そのため、例えば、 a=123456789012345.6 という浮動小数点数は16桁なので、正しい値が保証されるはずです。 ところが、printf("%f", d1); のようにprintf関数で表示すると、 123456789012345.593800 と表示されました。 これは、d1が正しい値を保持できていないという事です そこで、桁数を下げていった所、 a=1234567890.1 つまり、精度は11桁しかないという事になります。 何か僕が勘違いしているのでしょうか? それとも、僕が使っているコンパイラの精度が11桁しかないという事なのでしょうか? 何かお分かりの方がいらっしゃれば、是非アドバイスを頂きたいと思います。 では、よろしくお願い致します。

専門家に質問してみよう