2012-04-21 13 views
1

データ型が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変数、すなわち、リンケージ・セクションの変数を使用していますどこに私が作ったもう一つの観察は、あるあるで私を助けてください。私は異常終了しています

+1

あなたのコール/リンケージには注意してください。呼び出し元のプログラムは、参照(ACTNUM、AMOUNTを使用してCALL UPDATEPROGを使用)の2つのパラメータを渡していますが、呼び出されたプログラムは1つのパラメータ( 'PROCEDURE DIVISION USING DEPOSITPARAMS')のみを受け取ります。 呼び出し元のプログラムと呼び出されたプログラムは、作業用の記憶域/リンケージがこれを可能にする方法でレイアウトされているため、この特定の場合には動作しますが、通常は正しくアドレスが整列しない可能性があるので問題につながります。 呼び出しと呼び出されたプログラムのパラメータリストの間に1対1の関係を保つのがベストです。 – NealB

答えて

4

私は異常終了コードのためにASRAを意味すると思います。

TESTオプションを指定してコンパイルした場合は、ワーキングストレージ、ローカルストレージ、およびリンケージセクションの変数とその値を示す書式付きダンプが必要です。 AMOUNTフィールドに数字以外の値があると思われます。

CICSでは、コア・ダンプがCESE過渡データ・キューに書き込まれます。これは、CICSシステム・プログラマーによってCICS領域のCEEMSG DDにマップされることがよくあります。コア・ダンプの先頭を見つけるためにCEE3845を見つけます。これは、何が間違って発生したか、異常終了したかの詳細な説明を含むLanguage EnvironmentメッセージのメッセージIDです。

1

マップを読み込む領域のCOBOL定義が実際にマップによって返される領域と一致することを確認します。私は、CEDFを実行し、呼び出しからの復帰時にREAD MAPが埋める領域を注意深く見てください。私はあなたが不一致を見つけると思う。

0

コードに、次のコードを追加します。

リンクセクション。
01寄生虫。
05リンケージ-REF S9(4)COMP-3。

05 ACTNUM PIC X(6)。
05額PIC 9(8)。

+0

いいえ、それはまったく意味がありません。それが助けになると思われることを説明できますか? –

関連する問題