0040.00 E NMK 20 1

0200.00 C MOVELP1NMK NMK
0201.00 C*
0202.00 C 1 DO 20 Y 20
0203.00 C NMK,Y IFEQ *BLANK
0204.00 C MOVEL*HIVAL NMK,Y
0205.00 C ENDIF
0206.00 C ENDDO
0207.00 C*
0208.00 C SETOF 92
0209.00 C P1NMK SETLLEDTML01
0210.00 C*
0211.00 C *IN92 DOWEQ*OFF
0212.00 C READ EDTML01 92
0213.00 C TMNMK IFGT NMK
0214.00 C SETON 92
・・・・・
こんな感じでやっているんですが213行目のところでコンパイル落ちちゃいます・・・
エラーでは
指定された演算命令に対して演算項目2の配列名が正しくない
とでます
ちなみにTMNMKはカナ名称属性Aで20桁です。
演算項目2に配列名を入れることは無理なのでしょうか?

A 回答 (2件)

>0213.00 C TMNMK IFGT NMK


ここで20桁のものと、1桁を比べれるか自体やったことが無いので
わからないのですが、演算項目2に配列名を入れることは可能です。

E AR6 3 5 1

C 1 DO 3 A
C WSJYUR IFLE AR6,A
C 処理
C ENDDO
このように配列の数だけループさせて調べる方法があります。
hisajiroさんの場合は配列の何番目を使って調べたら良いのか
指定されていなかったのでコンパイルエラーになったのでは
無いでしょうか(,A)の部分です。
いかがでしょうか。
    • good
    • 0
この回答へのお礼

0040.00 E NMK 20 1

0052.00 I DS
0053.00 I 1 20 NMK
0054.00 I 1 20 P1NMK
0055.00 I 1 20 WNMK

これでやってみたらうまくいきました。
ありがとうございます^^

お礼日時:2002/02/26 10:58

目的が良く分からないプログラムですが この場合の演算横目2は NWK,x の形をとるか 事前にMOVEA コマンドで配列全体を変数に移送しておくと良いのではないでしょうか。



TMNNKと比較する配列のブランクを事前に*HIVILに置き換える意味も良く分かりません。

AS/400にはINFOSEEKERが導入されていれば マニュアルと同等の内容が検索できますのでご確認下さい。

蛇足ですがこのサイトでAS/400 RPGの回答が得られるのは機会が少ないと思いますので AS/400関連のFAQサイト等を検索されてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このプログラム自体は名称の類似検索の為に組んでいるものです。
このサイトでもAS/400関連の回答は結構あるので役にたっています^^
また何かあったらお願いします

お礼日時:2002/02/26 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QRPG 配列宣言について

いつもお世話になっております。
IBM AS/400の駆け出しプログラマーです。
今、配列を使ったシステムを組んでいるのですが、
たとえばAというDBの項目に同じものがいくつかあるとします。
課所コード1(KSCD1)、課所コード2(KSCD2)、・・・・
といったような項目です。
そのAのファイルを読み、課所コードを配列に入れたいのですが、
配列KSCというものに
KSC,1にはKSCD1
KSC,2にはKSCD2といった感じです。
演算仕様書でMOVEL  KSCD1  KSC,1
と個々にやっていく方法以外にレコードを読んだときに自動的に配列に入れるような方法があったら教えていただきたいと思います。
何せ個々に入れていくとそれだけで80行使ってしまうので・・・・
知っている方がいらっしゃいましたらどうかお助けください。
お願い致します。

Aベストアンサー

以下の様にプログラミングすれば可能です。

E* テーブル
E  KSC  80 5 (80はテーブル数、5は桁数)
I  DS
I      1  5 KSCD1 (KSCD1はAファイルのフィールド名)
I      6  10 KSCD2
I      11  15 KSCD3
I      16  20 KSCD4
      ・
      ・
      ・
I     396 400 KSCD80

あとはAファイルを読み込めば KSCD1 --> KSC,1 、KSCD2 --> KSC,2 ・・・・ KSCD80 --> KSC,80に自動的にセットされます。
この方法を使えば、画面ファイルのフィールドも同様に使用できます(私は良く使用しております)。
何かわからないことがあれば、補足します。

QRPGプログラムの*HIVALについて

0001.00 READ PGM 91
0002.00 91 EXSR @shori

0050.00 MOVEL*HIVAL #KF01

っというような流れがあります。
#KF01というのはKFLDで指定してある、
キーフィールドのうちのひとつです。

この場合MOVEL*HIVALというのは何を意味しているのでしょうか?

Aベストアンサー

RPGの場合は MOVE *HIVAL #KF01
だけではキーの中に最高値を入れているだけですので
それだけでは意味をなしません。
その後にキーによるSETLLやSETGTがあると思います。
そこで初めて次処理を何処からするか読み始める位置を
移動のみします。また、その後のREADから実際の処理が
始まります。
ファイルの並び順(降順・昇順)とSET○○と
READの種類により処理も変わってきます。
これらは余計な処理をしなくても良いように必要ない
データは読まないという処理に使用したり、READ
の場合一度ファイルを読むとそのまま同じファイルを
読もうとしても最後まで読まれているため1件も
読まれないということがあるためちゃんとファイルが
読めるようにというときに使用されます。
*LOVAL(最小値)も同じようなときに使用されます。

QRPG パラメーターについて

AS/400のRPG言語に携わり1年が経ちます。
お恥ずかしながら質問させていただきますが、
CLを組んで、CALLでRPGを呼び出す時にパラメーターを受け渡すようにしました。
初めてやってみましたが、なんとか動くようになりましたが、
今度はデバッグするときや、コマンドラインで直接プログラムを呼び出す時、CALLのオプションでパラメーターを指定しなければならなくなりました。
例えばOPTという数字変数のパラメータとAという文字パラメーター、Bという論理データのパラメーターにそれぞれ
1、’登録’、’1’というものを渡したい場合、
CALL PGM(EM02PR) PARM(・・・・・・)
PARMの記述はどう記入すればよいのでしょうか?

おわかりになる方宜しくお願い致します。

Aベストアンサー

CALL PGM(EM02PR) PARM('1' '0' '0' X'1F')もしくは
CALL PGM(EM02PR) PARM('1' '0' '0' X'01F')
どちらかで大丈夫だと思います。
いかがでしょうか。


人気Q&Aランキング