構造化プログラミング(SP)マクロ

HLASM Toolkit Feature
「構造化プログラミング(SP:Structured Programming)マクロ」

SPマクロは、アセンブラーのソース・コードでDO、IF、SELECTといった構造化プログラミング用記述を行う為のマクロ命令です。アセンブラー・プログラムでは分岐命令は当たり前のように使いますが、これらの構造化マクロを使うことで分岐命令で飛びまくるようなコードを書きにくくして、他の言語同様の論理展開を可能にするものです(アセンブラー用の構造化マクロでも実際に生成されるコードでは分岐命令は多用されるが、ソース・コード上に現れないように隠してしまうコード記述ができる)。ユーザーによってはアセンブラー言語のアプリケーション・プログラムでも、構造化コードでの記述が標準化されている場合があります。SPマクロの存在を知っていれば、業務で携わるようなことになった場合でも慌てなくて済むかも知れません。元々はIMSやJES328Xのライブラリーに入っていたものと聞いていますが、現在では高水準アセンブラーのツールキット・フィーチャーの1機能として提供されています(*1)。

*1 HLASM Toolkit Featureは有償機能である。ユーザーが業務アプリケーションで使用しているなら契約されていると考えてよい。
    構造化セット 含まれるステートメント(マクロ)
    IF IF / ELSE / ELSEIF / ENDIF
    DO DO / DOEXIT / ITERATE / ASMLEAVE / ENDDO
    CASE CASENTRY / CASE / ENDCASE
    SEARCH STRTSRCH / EXITIF / ORELSE / ENDLOOP / ENDSRCH
    SELECT SELECT / WHEN / OTHRWISE / ENDSEL

SPマクロによる構造化はソース・コード上での構造化記述を可能にするだけで、アセンブルの結果として生成される機械語コードでは比較や分岐命令が使用されます。プログラマーが直接書かなくなるだけです。構造化ステートメントの機能を実現することを優先していて、実行効率の面では必ずしも最適な機械語コードになるとは限りません。また、他言語と異なりIFやDOの条件式では、比較用の命令や成立条件を機械命令のニーモニックで書かねばならないことも多く、「機械命令を覚えなくてもプログラムが書ける」というものでもありません。性能面でのコード最適化やコード記述の省力化に寄与するものではないですが、「ソース・コード上での論理表現を統一化できることを優先したい」という場合には有用でしょう。

ドキュメントとマクロ・ライブラリー

SPマクロ(抜粋)

    IF、ELSE、ENDIF

    条件式の記述パターンは複数あり、上記は基本的なもの。その他についてはマニュアルを参照。

    【記述例】

    DO、ENDDO

    条件式の記述パターンはIFと同じ。複合条件も記述できる。

    【記述例】

    SELECT、WHEN、OTHRWISE、ENDSEL

    【記述例】

SPコーディング例