演算での配列の指定
演算仕様書では、配列全体または配列の個々の要素を指定することができます。 個々の要素は、フィールドの場合と同様に処理することができます。
OVERLAY キーワードによって定義された不連続の配列は、MOVEA 命令によって、 あるいは PARM 命令の結果フィールドの中で使用することはできません。
配列全体を指定するためには、配列名だけを使用してください。配列名は、演算 項目 1、演算項目 2、または結果のフィールドとして使用することができます。 配列 名を使用できる命令は次のとおりです。すなわち、ADD、Z-ADD、SUB、Z-SUB、 MULT、DIV、SQRT、ADDDUR、SUBDUR、EVAL、EXTRCT、MOVE、MOVEL、 MOVEA、MLLZO、MLHZO、MHLZO、MHHZO、DEBUG、XFOOT、LOOKUP、 SORTA、PARM、DEFINE、CLEAR、RESET、CHECK、CHECKR、および SCAN です。
配列名だけでは使用できず、配列要素だけで使用できる命令もいくつかあります。 これらの命令には、BITON、BITOFF、COMP、CABxx、TESTZ、TESTN、TESTB、 MVR、DO、DOUxx、DOWxx、DOU、DOW、IFxx、WHENxx、WHEN、IF、 SUBST、および CAT が含まれますが、これらに限定されているわけではありません。
指標のない配列名またはアスタリスクを指標として持つ配列名 (たとえば、
ARRAY または ARRAY(*)) を指定した場合には、配列の各要素について特定の命令
が反復されます。これらの命令は、ADD、Z-ADD、EVAL、SUB、Z-SUB、
ADDDUR、SUBDUR、EXTRCT、MULT、DIV、SQRT、MOVE、MOVEL、
MLLZO、MLHZO、MHLZO、および MHHZO です。
指標のない配列名を指定した場合には、これらの命令に対して次の規則が適用さ
れます。
- 演算項目 1、演算項目 2、および結果のフィールドが同数の要素を含む配列 の場合に、演算には各配列の最初の要素が使用され、次に、各配列の 2 番目の要 素が使用され、同様に配列中のすべての要素が処理されます。 配列が同じ項目数 でない場合には、要素の数が最も少ない配列の最後の要素が処理された時点で、 演算は終了します。 ADD、SUB、MULT、および DIV 命令の場合に演算項目 1 が指定されないと、演算項 目 1 は結果のフィールドと同じであると見なされます。
- 演算項目のどちらか 1 つがフィールド、リテラル、または形象定数で、もう 1 つの演算項目と結果のフィールドが配列であった場合には、演算は、短い方の 配列の各要素について一度だけ実行されます。 すべての演算で、同じフィールド 、リテラル、または形象定数が使用されます。
- 結果のフィールドは、常に配列でなければなりません。
- 命令コードが演算項目 2 だけを使用し (たとえば、Z-ADD、Z-SUB、SQRT、 ADD、SUB、MULT、または DIV では演算項目 1 が 指定されないことがある)、 結果のフィールドが配列の場合には、演算は配列のすべての要素に対して一度だ け実行されます。 演算項目 2 が配列でない場合には、すべての命令で同じフィールドまたは固定情 報が使用されます。
- 処理される演算の回数が多いため、結果の標識 (71 から 76 桁目) を使用するこ とはできません。
- EVAL 式において、右側に指標を用いない配列を指定した場合、 左側にも指標を用いない配列を含める必要があります。
注: EVAL 命令の中で使用した場合に、%ADDR(配列) および %ADDR(配列 (*)) は同じ意
味を持ちません。 詳細については、%ADDR (変数のアドレスの検索)を参照してください。
EVAL または SORTA 命令をコーディングするときには、組み込み関数 %SUBARR(arr) を使用して、 その命令で使用される配列の一部を選択することができます。 詳細については、%SUBARR (配列の部分の設定/入手)を参照してください。