DS
(データ構造定義: Data Structure ) は
C言語などの「構造体」( typedef
) に相当するものである。
C言語の構造体( typedef
) を拡張して関数(メソッド)と要素を構造化したものが
VC++ の Class
であり、
Java はこれをさらにオブジェクトにまで拡張して class
とした。
このように考えると RPG の DS
(=Data Structure) は
構造化したオブジェクトの基本である。
DSは DS自身を要素とする配列として定義することは以前に紹介した。
【 DSの配列の例 】
* OVLR 配列の項目 D OVLRCD DS QUALIFIED D RECORD 1 10A D LIN 11 13S 0 * OVLRCD の 256 個の配列 D OVLR S LIKE(OVLRCD) D DIM(256) * 配列の要素 D OVL S 3S 0 INZ(0)
今回、紹介するのは構造化された DS の例である。
つまり DS を要素とする DS の定義である。
【 TESTDS2: DS から定義される DSの例 】
0001.00 H DFTNAME(TESTDS2) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 二重構造化された DATA STRUCRURE の使い方 ***************** 0003.00 F* 0004.00 F********************************************************************** 0005.00 0006.00 D FILEDS DS QUALIFIED 0007.00 D FILE 1 10 ファイル名 0008.00 D FILLIB 11 20 ファイル名 0009.00 0010.00 D PGMDS DS QUALIFIED 0011.00 D PGM 1 10 ファイル名 0012.00 D PGMLIB 11 20 ファイル名 0013.00 0014.00 D LIBDS DS QUALIFIED 0015.00 D FILES LIKEDS(FILEDS) 0016.00 D PGMDS LIKEDS(PGMDS) 0017.00 0018.00 C EVAL LIBDS.FILES.FILE = 'SHOHIN' 0019.00 C EVAL LIBDS.PGMDS.PGM = 'PGM001' 0020.00 C SETON LR 0021.00 C RETURN
【 解説 】
FIELDS
はひとつの DS定義であり、PGMDS
も DS定義である。
LIBDS
という DS は、これら FILEDS
と PGMDS
から成る DS であり
二重構造化された DS である。
このように DS を二重化して再定義できることも覚えておけば複雑なデータの構造も
DS によって管理しやすくなる。
もちろん例によって DS は QUALIFIED
を宣言しておけば他のフィールドとは
明確に差別化することができるのでプログラムの品質向上に役に立つので
これも覚えていて欲しい。