• 検索結果がありません。

配列とコレクションの利用

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 78-82)

第3章   NetCOBOL for .NETの特徴

3.4 オブジェクト指向プログラミングの文法

3.4.3 配列とコレクションの利用

. N e t F r a m e w o r kで は 、C O B O Lの 表( O C C U R S句)と 似 て 異 な る 概 念 に 配 列 と コ レ ク シ ョ ン が あ り ま す 。

( 1 ) 配 列  

配 列 は 、 イ ン デ ッ ク ス を 使 用 し て ア ク セ ス さ れ る 、 複 数 の 同 じ 型 の 変 数 を 含 む デ ー タ 構 造 で す 。 そ の 機 能 を 考 え る と 、 配 列 はC O B O Lの 表 に よ く 似 て い ま す 。 し か し 、. N e t F r a m e w o r kの 配 列 は 単 な る 表 で は な く 、 配 列 自 体 が オ ブ ジ ェ ク ト と な り ま す 。 そ の た め 、 配 列 を 利 用 す る に は 、 配 列 の イ ン ス タ ン ス 化 な ど 「3 . 3 . 4 オ ブ ジ ェ ク ト 参 照 項 目 の 定 義 と オ ブ ジ ェ ク ト イ ン ス タ ン ス の 作 成 」 で 述 べ た よ う な 、 通 常 の オ ブ ジ ェ ク ト と 同 様 の 記 述 が 必 要 と な り ま す 。 ま た 、 配 列 の 要 素 に ア ク セ ス す る 場 合 、 取 得 に はG e tメ ソ ッ ド 、 設 定 に はS e tメ ソ ッ ド を 用 い ま す 。C O B O Lの 表 の 添 字 は 1 か ら 始 ま り ま す が 、 配 列 の イ ン デ ッ ク ス は 0 か ら 始 ま る こ と に 注 意 し て く だ さ い 。

実 際 に 配 列 を 利 用 す る 例 は 、 次 の よ う に な り ま す 。

S y s t e m . S t r i n g オ ブ ジ ェ ク ト の 配 列 を 利 用 す る 例  

R E P O S I T O R Y .  

      C L A S S   C L A S S - S T R I N G   A S   " S y s t e m . S t r i n g " .         C L A S S   A R R A Y - S T R I N G   A S   " S y s t e m . S t r i n g [ ] " .  

      C L A S S   A R R A Y 2 - C L A S S - S T R I N G   A S   " S y s t e m . S t r i n g [ , ] " .  

・ ・ ・ ・ 

W O R K I N G - S T O R A G E   S E C T I O N .  

    0 1   W K - S T R I N G     O B J E C T   R E F E R E N C E   C L A S S - S T R I N G .       0 1   W K - A R R A Y       O B J E C T   R E F E R E N C E   A R R A Y - S T R I N G .       0 1   W K - A R R A Y 2     O B J E C T   R E F E R E N C E   A R R A Y 2 - S T R I N G . .    ・ ・ ・ ・ ・ 

    P R O C E D U R E   D I V I S I O N .  

* > 8個 の 要 素 を 持 つ 1 次 元 文 字 列 配 列 オ ブ ジ ェ ク ト 作 成        I N V O K E   A R R A Y - S T R I N G   " N E W "   U S I N G   8  

      R E T U R N I N G   W K - A R R A Y .    

* > 4×8個 の 要 素 を 持 つ 2 次 元 文 字 列 配 列 オ ブ ジ ェ ク ト 作 成        I N V O K E   A R R A Y 2 - S T R I N G   " N E W "   U S I N G   4   8  

      R E T U R N I N G   W K - A R R A Y 2 .   . . . .  

* >1 次 元 配 列 の 最 初 の 要 素 を 取 得 

      I N V O K E   W K - A R R A Y   " G e t "   U S I N G   0  

      R E T U R N I N G   W K - S T R I N G .    

* >2 次 元 配 列 の 位 置( 1 , 2 )の 要 素 を 設 定 

      I N V O K E   W K - A R R A Y 2   " S e t "   U S I N G   1   2   W K - S T R I N G .    

( 2 ) コ レ ク シ ョ ン  

同 じ ク ラ ス ( オ ブ ジ ェ ク ト ) の 集 ま り を 管 理 す る オ ブ ジ ェ ク ト を 、

「 コ レ ク シ ョ ン 」 と 言 い ま す 。

コ レ ク シ ョ ン か ら 要 素 ( オ ブ ジ ェ ク ト ) を 取 り 出 す に は 、 プ ロ パ テ ィ に イ ン デ ッ ク ス ( 添 字 ) を 指 定 す る イ メ ー ジ と な り ま す 。V Bで は 、 コ レ ク シ ョ ン に イ ン デ ッ ク ス を 指 定 し て 、 オ ブ ジ ェ ク ト を 指 定 す る こ と が で き ま す 。 し か し 、 コ レ ク シ ョ ン に 直 接 イ ン デ ッ ク ス を 指 定 し て オ ブ ジ ェ ク ト を 参 照 す る 文 法 は 、 オ ブ ジ ェ ク トC O B O Lに は 用 意 さ れ て い ま せ ん 。 し た が っ て 、. N E T F r a m e w o r kで は 、 イ ン デ ク サ と 呼 ば れ る 機 能 を 利 用 し て 、 コ レ ク シ ョ ン に イ ン デ ッ ク ス を 指 定 し て 、 要 素 を 取 得 す る た め の 方 法 が 用 意 さ れ て い ま す 。

INVOKE コレクション名 “get_インデクサ”USING インデックスReturning 戻り値 SET 戻り値TO コレクション名:: “get_インデクサ”(インデックス)

MOVE コレクション名:: “get_インデクサ”(インデックス) TO 戻り値

INVOKE コレクション名 “get_インデクサ”USING インデックスReturning 戻り値 SET 戻り値TO コレクション名:: “get_インデクサ”(インデックス)

MOVE コレクション名:: “get_インデクサ”(インデックス) TO 戻り値

オブジェクト(コレクション) WorkSheets

WorkSheetコレクションに、Sheetオブジェクトへのインデクサ として、Itemが定義されている場合

(例)

SET w-WorkSheet TO WorkSheets ::"get_Item" ("Sheet2")

値の取得

・w-WorkSheetオブジェクトにSheet2のSheetオブジェクトを格納 Sheetオブジェクト"Name=Sheet1"

SheetオブジェクトName="Sheet2"

SheetオブジェクトName="Sheet3"

INVOKE コレクション名 “set_インデクサ”USING インデックス 設定値 INVOKE コレクション名 “set_インデクサ”USING インデックス 設定値

インデクサにgetアクセサを利用した 値の取得

インデクサにsetアクセサを利用した 値の設定

図 3 . 4 . 3   コ レ ク シ ョ ン の 利 用  

イ ン デ ク サ を 利 用 す る と 、 プ ロ パ テ ィ の 値 を メ ソ ッ ド 形 式 で 呼 び 出 す こ と が で き ま す 。 具 体 的 に は 、 イ ン デ ク サ に 「g e t _」 や 「s e t _」 の 接 頭 辞 を 指 定 し 、 オ ブ ジ ェ ク ト の 取 得 や 設 定 の 「 メ ソ ッ ド 」 と し て 利 用 す る こ と に な り ま す 。

値 ( オ ブ ジ ェ ク ト ) の 取 得    

I N V O K E  コ レ ク シ ョ ン 名  " g e t ̲イ ン デ ク サ"  

      U S I N G  イ ン デ ッ ク ス  R E T U R N I N G  戻 り 値   

S E T  戻 り 値  T O  

         コ レ ク シ ョ ン 名: :   " g e t ̲イ ン デ ク サ"   (イ ン デ ッ ク ス)      

M O V E  コ レ ク シ ョ ン 名: :   " g e t ̲イ ン デ ク サ"   (イ ン デ ッ ク ス)           T O  戻 り 値   

 

値 ( オ ブ ジ ェ ク ト ) の 設 定    

I N V O K E  コ レ ク シ ョ ン 名  " s e t ̲イ ン デ ク サ"  

      U S I N G  イ ン デ ッ ク ス 設 定 値 

ま た 、 コ レ ク シ ョ ン の 各 要 素 を 反 復 処 理 で 取 り 出 す に は 、P E R F O R M 文 ( 拡 張 構 文 ) を 使 用 し ま す 。 こ の 構 文 に よ り 、G e tメ ソ ッ ド や イ ン デ ッ ク ス の 換 算 処 理 な ど を 記 述 す る こ と な く 、 コ レ ク シ ョ ン の 各 要 素 を 順 次 取 り 出 す こ と が 可 能 で す 。

反 復 処 理 に よ る 値 の 取 出 し  

P E R F O R M   V A R Y I N G  オ ブ ジ ェ ク ト 名  T H R U  コ レ ク シ ョ ン 名  . . . .  

E N D - P E R F O R M  

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 78-82)