COBOL2002 使用の手引 手引編


5.7.3 SET文

SET文は,次の手段を提供します。

SET文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.43 SET文」,およびマニュアル「COBOL2002 言語 拡張仕様編」 「13.5.8 SET文(WINDOW SECTION)」を参照してください。

〈この項の構成〉

(1) 表要素に関連する指標を設定するSET文

表要素に関連する指標を設定して,表操作の参照点を確立するSET文の例を次に示します。

(例1)

指標名から指標名に転記する場合

       05 A PIC X(5) OCCURS 10 INDEXED BY K.
       05 B PIC 9(8) OCCURS 10 INDEXED BY J.

指標名Kには,表の6番目の要素を参照するときの値,5×6=30が入っています。ここで次のSET文を実行すると,Kの値30を出現番号6に換算して(30/5=6),Bの出現番号6に対応する値8×6=48をJに設定します。

       SET J TO K.
(例2)

指標データ項目から指標名に転記する場合

       05 A PIC PP999 OCCURS 15 INDEXED BY K.
       05 B USAGE INDEX.

Bの値が30のとき,次のSET文を実行すると,Bの値を出現番号に対応して換算しないで,そのままKに設定します。

       SET K TO B.
(例3)

整数項目または整数から指標名に転記する場合

       05 A PIC X(5) OCCURS 30 INDEXED BY K.
       05 B PIC 9(2) VALUE 11.

ここで次のSET文のどちらかを実行すると,Bの値11または整数11を出現番号とみなし,それに対応する値5×11=55をKに設定します。

       SET K TO B 

または

       SET K TO 11 
(例4)
       05 A PIC X(5) OCCURS 12 INDEXED BY K.
       05 B USAGE INDEX.
       05 C USAGE INDEX.

Kには,Aの出現番号7に対応する値5×7=35が入っています。ここで次のSET文を実行すると,Kの値を変換しないで,35をそのままBに設定します。

       SET B TO K 

そのあとで次のSET文を実行すると,Bの値を変換しないで,35をそのままCに設定します。

       SET C TO B 
(例5)
       05 A PIC 9(3) OCCURS 20 INDEXED BY K.
       05 B PIC 9(8).

Kには,Aの出現番号12に対応する値3×12=36が入っています。ここで次のSET文を実行すると,Kの値を出現番号12に変換(36/3)してBに12を設定します。

       SET B TO K 
(例6)
       05 A PIC X(7) OCCURS 30 INDEXED BY K.
       05 B PIC A(3) OCCURS 30 INDEXED BY J.
       05 C PIC 9(2) VALUE 3.

Kには出現番号6に対応する値7×6=42が入っています。Jには出現番号25に対応する値3×25=75が入っています。

ここで,次のSET文を実行すると,Kには出現番号6+3=9に対応する値7×9=63が入ります。

       SET K UP BY C

そのあとで次のSET文を実行すると,Kには出現番号9-1=8に対応する値7×8=56が入ります。

       SET K DOWN BY 1

また,次のSET文を実行すると,Jには出現番号25-3=22に対応する値3×22=66が入ります。

       SET J DOWN BY C 

そのあとで次のSET文を実行すると,Jには出現番号22+8=30に対応する値3×30=90が入ります。

       SET J UP BY 8 

(2) 外部スイッチの状態を変更するSET文

外部スイッチの状態を変更するSET文の例を次に示します。

(例)
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
       UPSI-0 IS SW0
              ON  STATUS IS ONIND0
              OFF STATUS IS OFFIND0.
            :
       PROCEDURE DIVISION.
            :
           IF OFFIND0 THEN
             SET SW0 TO ON
           END-IF.

外部スイッチの状態を変更するSET文の詳細は,「16.2.4 外部スイッチ」を参照してください。

(3) 条件変数の値を変更するSET文

条件変数の値を変更するSET文の例を次に示します。

(例)
       03 OF-WEEK PIC X(3).
       88 HOLIDAY VALUE 'SUN'.  *>1.
       88 WEEKDAY VALUE 'MON' 'TUE' 'WED'
                        'THU' 'FRI' 'SAT'.  *>1.
  1. OF-WEEKに対する条件名

ここで次のSET文を実行すると,OF-WEEKには'SUN'が設定されます。

       SET HOLIDAY TO TRUE 

また,次のSET文を実行すると,OF-WEEKにはWEEKDAYに指定された最初の定数である'MON'が設定されます。

       SET WEEKDAY TO TRUE 

複数の条件名を書いたときは,そのSET文中に指定したのと同じ順序で,各条件名に対して別々のSET文を書いたのと同じ結果となります。条件名に添字が付いている場合は,繰り返すたびに一つずつ順番に評価します。

(4) オブジェクト参照を設定するSET文

20.2.7 オブジェクト指向による適合」を参照してください。

(5) 最新例外状態をクリアするSET文

21.7.3 最新例外状態のクリア」を参照してください。