DECLARE 文の一般的な形式は次のとおりです。
DECLAREd⊂1[,d⊂2 …];
または
DCL d⊂1 [,d⊂2 …];
各 d は次のとおりです。
[k]name a⊂1 a⊂2 … a⊂n
または
[k](d⊂1[,d⊂2]…)a⊂1 a⊂2 … a⊂n
k はオプションのレベル番号、各 a は属性、name は宣言する名前です。
例:
DECLARE ((A FIXED, B FLOAT) DECIMAL, C BIT) STATIC; DECLARE 1 S STATIC, 2 (A FIXED, B FLOAT) INITIAL(0);
これらの例は、DECLARE 文にかっこで囲まれた名前のリストが含まれていることからわかるように、要素宣言を示しています。要素宣言を非要素宣言に変換するには、内側のかっこのレベル番号および属性のリストをかっこ内の各名前にコピーして、かっこを削除します。このプロセスを順番に繰り返します。
前の例を非要素宣言に変換すると次のようになります。
DECLARE A FIXED DECIMAL STATIC; DECLARE B FLOAT DECIMAL STATIC; DECLARE C BIT STATIC; DECLARE 1 S STATIC, 2 A FIXED INITIAL(0), 2 B FLOAT INITIAL(0);
要素宣言は、推奨される形式 (「要素宣言」を参照) に示されているものは別として、一般に、同等の非要素宣言に比べて読みにくくなります。
非要素宣言への変換によって特定の名前に複数のレベル番号が生成される場合は、レベル番号が同じであってもその要素宣言は無効となり、コンパイラによってエラー メッセージが生成されます。
また、単純なキーワード以上のものを含む属性が重複している場合も、正確な複製であっても無効になります。