2012-01-25 2 views
0

Cobolのプログラム間でデータをやりとりするために、EXEC CICSプログラム制御コマンド、LINK、XCTL、およびRETURNを使用します。 CICS共有メモリーは、私の治療中に壊れてしまいます。 CICSに属していないCOMMAREA上書きメモリーが渡されたようです。 この問題が発生した理由を調べるには、EXEC CICSプログラム制御コマンドを使用するときにCICSが共有メモリーをどのように管理するかを知る必要があります。 COMMAREAをコピーするか、ポインタを使用しますか?ネストされたEXEC CICSを使用して、共有メモリにいくつのCOMMAREAが格納されていますか?CICS共有メモリーの仕組みは?

設定:私はMicrofocus Net Expressコンパイラを使用しており、環境はUniKixです。

PS:EXEC CICSを使用して上書きする方法の詳細については、What can cause CICS transaction to write out of CICS allocated memory?を参照してください。

答えて

2

Net Expressについてはわかりませんが、CICSでは、commareaにはポインタを使用してアクセスします。

プログラムxがプログラムyに接続すると、yのコミレアに対して行われた更新はすべてxで表示されます。

yのCommarea定義がxの定義よりも大きい場合、私は悪化します。commareaの後に変数を更新することができます。 XCTLについては

、COMMAREAがCICS制御領域と実際には非常に限られた状況で動作プログラム

+1

に渡されたポインタにコピーされます。歴史的には、はい、それは大丈夫でした。しかしIBMは、その地域を何十年もの間、特定の機能に分割することに大きな力を注いできました。したがって、共有メモリへのポインタはLINKed/RETURNed/XCTLed PROGRAMが同じAORである限り大きな効果を発揮しますが、ダイナミックなトランザクションルーティングが行われていれば恐ろしく失敗します。 –

+1

ほとんどの絶対的なルールは、共有メモリと決して決してcommareaにポインタを置くことはありません。それはMicrofocusのテストベッドではうまくいくかもしれませんが、彼の制作時には悲惨に失敗します。 –