OpenFrame ASMの検証
本章では、OpenFrame ASMをインストールした後にアセンブリ・ファイルをコンパイルする方法とコンパイル・コマンド・オプションについて説明します。また、外部プログラムを呼び出す場合に必要なインターフェース・モジュール作成ツールの使用方法とコマンド・オプション、そしてg++を使用したインターフェース・モジュールのコンパイル方法について説明します。
1. コンパイル
以下は、OpenFrame ASMをインストールした後、ofasmコマンドを使用してasmサンプルをコンパイルする方法です。
-
$OFASM_HOMEの次の場所でasmサンプルを確認します。
$OFASM_HOME/sample
-
asmサンプルをコンパイルします。
ofasm ADD.asm
-
.asmoファイルが出力ファイルとして作成されていることを確認します。asmoファイルは、$LD_LIBRARY_PATHに指定したパスに存在する必要があります。
ADD.asmo
1.1. ofasmコマンド
以下は、OpenFrame ASMでコンパイル・コマンドを使用する方法です。
ofasm ソースファイル ... [コマンドオプション...]
-
ソース・ファイル
ASMソース・ファイルとして認識させるには、ファイルの拡張子がasmである必要があります。
-
コマンド・オプション
以下は、ソース・ファイルをコンパイルするためのデフォルト・コマンド・オプションです。
オプション 説明 -o <ファイル名>
オブジェクト・ファイル名を指定します。このオプションを使用しない場合は、
<入力ファイル名>.asmo
に指定されます。--debug
前処理やコンパイル関連のログ・メッセージを表示します。
-L <dir>
マクロ・ライブラリのパスを設定します。
-h(H) または --help
ヘルプを表示します。
--version
OpenFrame ASMのバージョン情報を表示します。
-E
前処理プロセスのみを実行します。入力として
.asm
ファイルを受け取り、出力としては.asmi
ファイルを生成します。-S
アセンブリ・プロセスのみを実行します。入力として
.asmi
ファイルを受け取り、出力としては.asmo
ファイルを生成します。--enable-cics
CICSライブラリを有効にします。
--list
OpenFrame ASMでサポートできるmacro、copybookとmachineおよびassembler instruction、outdated instructionを表示します。
-x <params..>
コマンドラインでユーザーが指定したパラメータに対し、アセンブラ・プログラムを実行します。パラメータは16進の値のみを使用できます。
-f <filepath>
このオプションは、-xオプションが指定されている場合にのみ使用できます。パラメータの情報を定義したJSON形式のファイルを指定します。
-r <reg_no> <value>
このオプションは、-xオプションが指定されている場合にのみ使用できます。実行する前のレジスタの値を指定します。
--entry <entryname>
このオプションは、-xオプションが指定されている場合にのみ使用できます。実行するエントリ名を指定します。
--save-punch
PUNCHレコード情報の出力ファイルを生成します。
--enable-spm
構造化プログラミング(Structured programming)マクロを有効にします。
--license
ライセンス情報を表示します。
--force-rmode31
対象プログラムのオブジェクト・コードは、31ビットRMODEが強制適用されます。
--no-reuse
対象プログラムは、OpenFrame ASMにロードされるたびにプログラム・インスタンスが新しく生成されます。
--sysparm <string>
対象プログラムの前処理に使用される&SYSPARMの値を指定します。
--enable-outdated
対象プログラムに対し、古いバージョンのコマンドを使用するように設定します。対象コマンドは、--listオプションを使用したときに出力される「outdated instruction」を参照してください。
--amode <24,31,ANY>
コンパイル時に使用するアドレス・モードを指定します。この値は、対象ファイルに定義されているAMODE値を上書きします。
--rmode <24,31,ANY>
コンパイル時に使用するレジデンス・モードを指定します。この値は、対象ファイルに定義されているRMODE値を上書きします。
--report
アセンブル時の詳細情報を {ファイル名}.asmrという別ファイルに出力します。この情報には、ロケーション・カウンターやオブジェクト・コードなどのアセンブル情報、およびバージョン、オプション、コンパイル日時が含まれます。
2. インターフェース・モジュールの作成
以下は、OpenFrame ASMをインストールした後、ofasmifコマンドを使用してインターフェース・モジュールを作成する方法です。
-
$OFASM_HOMEの次の場所でJSONサンプルを確認します。
$OFASM_HOME/sample
-
ADD.jsonを使用してインターフェース・モジュールを作成します。
ofasmif -i ADD.json
-
インターフェース・モジュールのADD_OFASM_VM_ENTRY.cppとsoファイルが作成されていることを確認できます。
ADD_OFASM_VM_ENTRY.cpp
2.1. ofasmifコマンド
以下は、OpenFrame ASMで提供されるofasmifコマンドの使用方法です。
ofasmif [コマンドオプション...]
-
コマンド・オプション
以下は、ソース・ファイルをコンパイルするためのデフォルト・コマンド・オプションです。
オプション 説明 -i <ファイル名>
入力ファイルを設定します。cppファイルを作成し、g++でコンパイルを行います。インターフェース仕様ファイルとして認識されるには、ファイルの拡張子が「json」である必要があります。
--cpp-only
cppファイルのみを作成します。-iオプションと一緒に使用する必要があります。
--comp-only
既存のcppファイルをg++でコンパイルします。-iオプションと一緒に使用する必要があります。
-g <インターフェースタイプ>
作成するJSONファイルのインターフェース・タイプを指定します。
-n <プログラム名>
プログラム名として使用されるJSONファイル名を指定します。-gオプションと一緒に使用する必要があります。
-e <エントリ名>
作成するJSONファイルのエントリ名を指定します。-gオプションと一緒に使用する必要があり、指定しない場合はプログラム名がエントリ名として使用されます。
-t <パラメータタイプ>
パラメータ・タイプ(V、F、PCB、JCL)を指定します。-eオプションと一緒に使用する必要があります。
-m <パラメータ数>
パラメータの最大数を指定します。-t V(可変パラメータ)の場合に使用します。
-s <サイズリスト>
パラメータのサイズ・リストを指定します。-t F(固定パラメータ)の場合に使用します。
--ptr-offset <ポインターパラメータオフセットリスト>
-t F(固定パラメータ)でありポインター・パラメータが存在する場合、ポインター・パラメータのオフセット・リストを指定します。--ptr-sizeオプションと一緒に使用する必要があり、リストの配列が同じである必要があります。
--ptr-size <ポインターパラメータサイズリスト>
-t F(固定パラメータ)でありポインター・パラメータが存在する場合、ポインター・パラメータのサイズ・リストを指定します。--ptr-offsetオプションと一緒に使用する必要があり、リストの配列が同じである必要があります。
-p <ファイル名>
入力ファイルの段落を自動的に合わせます。
-h(H)
ヘルプを表示します。
インターフェースの作成例
以下は、ofasmif -gオプションを使用してパラメータ・タイプ別にさまざまなインターフェースを作成する例です。
-
基本的な最大パラメータ数が10個の可変パラメータ・エントリ・インターフェースを生成します。
ofasmif -g entry -n TEST -e TEST
-
可変パラメータを持つENTRYインターフェースを作成します。パラメータの最大数を指定する必要があります。
ofasmif -g entry -n TEST -e TEST -t V -m 10
-
固定パラメータを持つENTRYインターフェースを作成します。ポインター・パラメータがない場合の例です。
ofasmif -g entry -n TEST -e TEST -t F -s 100,200,300
-
固定パラメータを持つENTRYインターフェースを作成します。ポインター・パラメータがある場合の例です。
ofasmif -g entry -n TEST -e TEST -t F -s 100,14,24 --ptr-offset “[(),(0,4),(4,8)]” --ptr-size “[(),(100,200),(200,300)]”
-
PCBパラメータを持つENTRYインターフェースを作成します。PCBパラメータの最大数を指定します。
ofasmif -g entry -n TEST -e TEST -t PCB -m 100
-
JCLパラメータを持つENTRYインターフェースを作成します。
ofasmif -g entry -n TEST -e TEST -t JCL
-
EXITインターフェースを作成します。ポインター・パラメータがない場合の例です。
ofasmif -g exit -n TEST -e TEST -m 10
-
EXITインターフェースを作成します。ポインター・パラメータがある場合の例です。
ofasmif -g exit -n TEST -e TEST -t F -s 100,14,24 --ptr-offset “[(),(0,4),(4,8)]” --ptr-size “[(),(100,200),(200,300)]”
-
LOADインターフェースを作成します。固定パラメータを持つENTRYインターフェースの作成方法と同じです。
ofasmif -g load -n TEST -e TEST -t F -s 1024
-
ENTRYが複数ある場合にインターフェースを作成する例です。
ofasmif -g entry -n TEST -e ENTRY_1 -t F -s 100,200 -e ENTRY_2 -t V -m 10