とあるSEの色々ブログ

プログラミングで全ての人を幸せに。プログラミングとITと転職と雑記と備忘録

AS400

【RPG4】DSについて

投稿日:

RPG4になって、I仕様書とE仕様書は廃止されました。
D仕様書を使って変数、配列、定数、DSなどを記述していきます。
特にこのD仕様書は色々便利になっている反面、戸惑うところもありましたので
備忘録も兼ねて画像を交えながら記載します。

基本的な使い方

まずはRPG3で使用していたDSや配列のイメージをRPG4ではどのように書くか。

  • DS名の指定
  • 桁指定と型指定
  • 桁位置指定
  • DSを配列にする方法
  • DSの初期値
名前のところは1文字空けるのがおすすめです
こんな風に仕様書定義のDとDS名の間にスペースが入るので見やすいですね。
このDS名を使用する場合は「DS_TEST」で可能です。
3フィールド構成のDS_TESTを作成しました。
フィールドは桁で指定するのが良いと思いますが、桁位置指定も可能です。
上記のDSを桁位置指定してみました。
もちろんFLD1〜FLD3の桁を指定した項目を用意することも可能です。

とはいえ、やはりここは桁指定のみに留めて
まとめて使用する場合は別途連結する方がわかりやすいようです。
DS_TESTの定義を使用して、ARY_DS_TESTという配列を作成しました。
DIMが配列の要素数の指定で
OVERLAYでDS定義を流用しています。
INZ()で初期値を指定することも可能です。

便利な使い方

サンプルでTESTFILEという社員マスタもどきを作成しました。
DSで上記のファイルと同じフィールド構成のものを作成しました。
QUALIFIEDというオプションをDSの指定に書くと
DS名.フィールド名という形でアクセスが可能になります。
そのためこのように記述が出来るため
どこの何に代入しているかがすぐわかりますね。
これが非常に便利です!
DSをE DSという外部指定に変えて
EXTNAME(ファイル名:オプション)という記載すると、
ファイルからフィールド構成を取得することができます。

ファイル名のところはLIB/FILEという記述も可能です。
LIBを省略するとライブラリーリストから参照されます。
*ALL全てのフィールドを抜き出す
*INPUT入力可能フィールドのみを抜き出す
*OUTPUT出力可能フィールドのみを抜き出す
*KEYキーフィールドのみを抜き出す
E DSとしてTESTFILEからフィールド構成を取得していて
QUALIFIED指定もあるため、このような記述が可能です。

RPG4ではキーの指定はKLISTも使用出来ますが
%KDSという関数が用意されているため、こちらを使用するのが良いと思います。

E DSでファイルからキーを取得して、それを%KDSで使うのが効率的ですね。

上記のTESTFILEのキー指定を部分を取得する場合は
TESTKEY E DS EXTNAME(TESTFILE:*KEY)
QUALIFIED

こんな記載で可能です。

-AS400

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ACSのインストール方法

ASのエミュレーターACSのインストール方法を紹介します。プリンターの印刷は安定しないとか悪い評判を昔はよく聞きましたが現在はどうなんでしょう?プリンター出力はまだ試していないのでわかりませんが開発環 …

STRDBG

デバッグにはSTRISDBが便利なのですが、RPG4では残念ながら使えません。WATCHとか使いやすい機能があって気に入っていたのですが。そこで他に方法はないかと調べていたところSTRDBGを見つけま …

RPG4のススメ

色んなベンダーさんからお話を伺うと、AS/400を使用している企業ではRPG3がまだ一番多いようです。RPG3の固定形式でのコーディングは、オープン系の開発に慣れている若い方にはなかなか馴染みづらい、 …

ユーザー定義コマンド作成方法

コマンドの入力文字数を減らしたい visual studioや他の豪華なIDEとかでは、インテリセンスという入力補完の機能があったりしますが、AS400のコーディングや保守を行うエミュレーターにはそん …

no image

【RPG4】EVAL

RPG4から追加されたEVALという命令を紹介します。RPG3では代入処理は、文字型の場合はMOVE、数値型の場合はZ-ADDを使用していたと思いますがRPG4ではMOVEやZ-ADDは非推奨です。フ …