OpenFrame ASMの検証

本章では、OpenFrame ASMをインストールした後にアセンブリ・ファイルをコンパイルする方法とコンパイル・コマンド・オプションについて説明します。また、外部プログラムを呼び出す場合に必要なインターフェース・モジュール作成ツールの使用方法とコマンド・オプション、そしてg++を使用したインターフェース・モジュールのコンパイル方法について説明します。

1. コンパイル

以下は、OpenFrame ASMをインストールした後、ofasmコマンドを使用してasmサンプルをコンパイルする方法です。

  1. $OFASM_HOMEの次の場所でasmサンプルを確認します。

    $OFASM_HOME/sample
  2. asmサンプルをコンパイルします。

    ofasm ADD.asm
  3. .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コマンドを使用してインターフェース・モジュールを作成する方法です。

  1. $OFASM_HOMEの次の場所でJSONサンプルを確認します。

    $OFASM_HOME/sample
  2. ADD.jsonを使用してインターフェース・モジュールを作成します。

    ofasmif -i ADD.json
  3. インターフェース・モジュールの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