データ型が2つの入力フィールドがあるマップがあります。X(6)、9(8) 私はこれらの2つの値を私のcobol-cicsプログラムの下の変数に格納します。アベンドASRA。これを処理する方法
01 SCREEN-DATA.
05 ACTNUM PIC X(6).
05 AMOUNT PIC 9(8).
は、今私は、COBOL、DB2プログラムにこれらの2つの値を渡しています:私の更新プログラムで
CALL UPDATEPROG USING ACTNUM,AMOUNT.
:
ACCOUNT-NUMBERは、テーブルの私のホスト変数であるLINKAGE SECTION.
01 DEPOSITPARAMS.
05 ACTNUM PIC X(6).
05 AMOUNT PIC 9(8).
PROCEDURE DIVISION USING DEPOSITPARAMS.
MOVE ACTNUM TO ACCOUNT-NUMBER.
私は作成しました。 プログラムを実行しても問題ありませんが、詳細を入力してEnterキーを押すと、私のマップに異常終了が表示されます。私は静的な値を与えました:MOVE 071250 TO ACCOUNT-NUMBER。それは正常に動作していると私はクエリを使用してテーブルから値を取得、更新することができました。何がこの異常終了の原因かもしれない。この問題
これらはDCLGEN
01 DCLACCOUNT-MASTER.
10 ACCOUNT-NUMBER PIC X(6).
10 ACCOUNT-HOLDER PIC X(20).
10 ACCOUNT-BALANCE PIC S9(8)V9(2) USAGE COMP-3.
10 LAST-UPDT-DATE PIC X(10).
10 OPENNING-DATE PIC X(10).
で作成された私のホスト変数iのACTNUM変数、すなわち、リンケージ・セクションの変数を使用していますどこに私が作ったもう一つの観察は、あるあるで私を助けてください。私は異常終了しています
あなたのコール/リンケージには注意してください。呼び出し元のプログラムは、参照(ACTNUM、AMOUNTを使用してCALL UPDATEPROGを使用)の2つのパラメータを渡していますが、呼び出されたプログラムは1つのパラメータ( 'PROCEDURE DIVISION USING DEPOSITPARAMS')のみを受け取ります。 呼び出し元のプログラムと呼び出されたプログラムは、作業用の記憶域/リンケージがこれを可能にする方法でレイアウトされているため、この特定の場合には動作しますが、通常は正しくアドレスが整列しない可能性があるので問題につながります。 呼び出しと呼び出されたプログラムのパラメータリストの間に1対1の関係を保つのがベストです。 – NealB