ジョブ間同期・通信マクロ実行
メッセージ通信(メッセージの送受信)
- メッセージ通信のしくみ
-
ここではジョブ間同期・通信マクロ実行のうち、メッセージ通信について説明します。
ジョブ間同期・通信マクロ実行によって、複数のプログラムの間でデータを送ったり、受け取ったりすることができます。
データを送受信する仕組みですが、正確には直接プログラム間でデータを送受信するのではありません。IJCCというものを介してデータを送ったり受け取ったりします。簡単に言うとメッセージの送受信のときのIJCCというのはデータの置き場所です。
メッセージの送受信の仕組みを簡単に説明します。
(1)プログラムAでもBでもCでもいいので、まず誰かがIJCC(データの置き場所)を作ります。
置き場所ができていれば、データの送受信ができます。
(2)データを送りたい人は、まず自分の家(プログラム)からデータの置き場所に道を通します。
(3)データを置き場所にどんどん置いていきます。受け取り側と同期を取って置いていっても良いし、受け取り側は気にせずにどんどん置いていってもかまいません。(ただし置き場所がいっぱいになるとエラーになるので注意)
(4)データを送る必要がなくなったら、後片付けです。置き場所への道を取り去ります。
(2)データを受け取りたい人も、自分の家(プログラム)からデータの置き場所に道を通します。
(3)データの置き場所にデータを取りに行きます。このときにデータが無かったら、すぐエラーを返すようにすることもできるし、データが送られてくるまで待つようにすることもできます。
もしデータが貯まっていたら送信されてきた順番に受け取ります。
(4)データを受け取る必要がなくなったら、後片付けをします。置き場所への道を取り外します。
(5)このIJCC(データの置き場所)が不要になったら、削除します。
つまりデータを送りたい人がデータを置き場所に置いて、受け取りたい人が置き場所からデータを持っていく仕組みです。
上の例ではわかりやすくするために送り側と受け側が順番に動いていますが、実際は両方のプログラムともにプログラムの最初でIJCCへの道を通して、非同期に片方がどんどん送って、もう片方がどんどん受け取るというようにもできます。
複数のプログラムがデータを置き場所に置いて(つまり送信して)、1つのプログラムが受け取るということもできます。
逆に1つのプログラムがデータを置いて、複数のプログラムが次々にデータを持っていくというような仕組みにもできます。(プログラムがデータを”持っていって”しまうので、別のプログラムはそのデータは持っていけない。次に受信しようとするプログラムは送信側が次に送ったデータを持っていくことになる。)
1つのプログラムで送信して、それをまた受け取るということもできます。
1つの置き場所には、データを貯め置くことができます。貯め置ける最大数は、システム生成で設定できます。通常だと14個ぐらいです。
データの置き場所は複数作ることができるので、どの置き場所なのか区別する為に置き場所(IJCC)には名前を付けます。
部外者がデータの置き場所から勝手に持っていけないように、カンパニという仕組みで置き場所を守る仕組みも用意されています。
ファイルを用意して、そのファイルをオープンして、リード/ライトして、終わったらクローズしてファイルを削除する、と言った方がわかりやすかったかもしれませんね。
後にサンプルプログラムを用意したので、それも参考にしてください。