「メインフレーム・コンピューター」で遊ぼうこんな時代に今さらメインフレーム・コンピューターに取り組むハメになったみんなが助けあうサイトです。RSSWordPress.orgコスパのいい社内システムの作り方メインフレームを扱っていると、軽い開発やメンテナンスにリソースを割けない、しかし、BPCも考えねば。解決策のひとつがクラウドにおくFileMakerです。現在ではアセンブラー言語でメインのアプリケーションを作ることはほとんどないものの、COBOLなどで作成されたアプリケーションからサブルーチンとしてのアセンブラープログラムを呼び出すことはよく行われます。COBOLなどの高水準言語プログラムから呼び出されるアセンブラールーチンの作成はさほどむずかしいことではありません。リンケージ規約通りにプログラムを作ればいいのですしかし逆はかなり面倒です。アセンブラールーチン側で言語処理プログラムの環境を作り上げねばなりません。現実的にアセンブラーでメインのアプリケーションを作り、サブルーチンをCOBOLで作るなどと言うことはまず行われませんからその方法はあえて解説もしません。必要ならコンパイラー(z/OSの場合ならLE)のマニュアルに解説されていますので参照してみてください。:COBOLから渡されるパラメーターはGR1が示すアドレス・パラメーターリストで受け取ることができます。CALL文のUSINGで指定された順序でパラメーターが格納された領域アドレスが示されます。サンプルでは3つのパラメーターPARM1,PARM2,PARM3を格納した領域アドレスがGR1で示されるアドレス・パラメーターリストで渡されます。PARM3アドレスを示すワードの先頭ビットは最終パラメーターであることを示すため1にセットされます。PARM1からPARM3領域のアドレスをLM命令でGR2からGR4にそれぞれロードします。PARM1およびPARM2で渡された値をPARM3領域にエコーバックするのがこのサンプルで行っている処理です。PARM1は8バイトの文字、PARM2はフルワードの整数値で、それぞれをPARM3領域の前半8バイトと後半8バイトに格納します。PARM2はバイナリー値を10進文字に変換して設定します。どのパラメーターがどのような形式や長さ、意味を持つかはプログラム間のインタフェースとして予め取り決めておきます。リンケージ規約やアドレス・パラメーターリストについてはリンケージ規約(サブルーチンを作る)も参照して下さい。呼び出すCOBOLは、このサブルーチンを以下のようにして呼び出します。PARM3.サブルーチンの処理結果を示す復帰コードはGR15に設定します。呼び出し側のCOBOLプログラムはRETURN-CODE(富士通ではPROGRAM-STATUS)でその値を参照することができます。COBMAIN1.呼び出されるアセンブラー・サブルーチンに対応した呼び出す側のCOBOLのサンプルです。最初の例はアセンブラールーチンもリンケージエディターで静的に結合されたモジュールの呼び出し例で、2番目はリンケージエディターで結合されていない独立したロードモジュールの呼び出し例です。COBOLによるコーディング例です。細かな構文はメーカーが提供するCOBOLコンパイラーによって多少の違いがあるので利用するコンパイラーのマニュアルも参照して下さい。COBOLではパラメーターを値その物で渡すこともできます。VALUE」を指定することでパラメーター領域のアドレスではなく値が渡ります。渡せるパラメーター(値)は2進整数など4バイト以内で渡せるデータに限ります。