メニューボタン
サポートチーム便り2021.12.08

物理ファイルでNull(ヌル)データを生成するには

Question

IBM i(AS/400)の物理ファイル(PF)でNULL(ヌル)を扱う方法を教えてください。

対象のフィールドのキーワードにALWNULL(ヌル値の許容)を指定して物理ファイル(PF)を作成し、RPGⅢでそのフィールド以外にデータをセットしてレコードを追加(ADD)しました。

ALWNULL (ヌル値の許容)を指定したフィールドを16進で見るとブランクのX'40が入っていました。

ブランクのX'40とNULL(ヌル)を分けてデータを作る必要があります。

フィールドに入っているデータをNULL(ヌル)で作成したいのですが、どのようにすると生成されますでしょうか。

Answer

残念ながら、RPGⅢでNULL(ヌル)の含んだPFにレコードを追加することはできないようです。

ILE-RPG(RPGⅣ)であれば、可能です。

まず、物理ファイル(PF)にはALWNULLとDFTを指定しておきます。

例)

A FAT003 10O DFT(*NULL)
A ALWNULL
スクリーンショット

そしてILE-RPG(RPGⅣ)で以下のようにコーデイングします。

例)

C EVAL %NULLIND(FAT003) = *ON
スクリーンショット

フリーフォームの場合は以下のようにコーデイングします。

例)

/FREE
%nullind(FAT003) = *ON;
/END-FREE
スクリーンショット

どちらでも構いませんので使いやすい方でコーデイングしてみてください。

そして、コンパイル時のパラメタで「ヌル値可能(ALWNULL)」を「*USRCTL」にしてください。

NULL(ヌル)データができると、WRKDBM(TOOLBOX)やDSPF、QUERYコマンドでは正しく見ることができなくなります。

DFUで該当のレコードを見てみると、以下のようになります。

スクリーンショット

DFU0849:フィールド FAT003 がヌル値である。ヌル値フィールドが見つかりました。

いかがでしょうか。宜しければ是非お試しください。

【参考情報】

%NULLIND (ヌル標識の照会または設定)
https://www.ibm.com/docs/ja/i/7.4?topic=functions-nullind-query-set-null-indicator

ALWNULL (ヌル値の許容) キーワード - 物理ファイルのみ
https://www.ibm.com/docs/ja/i/7.4?topic=80-alwnull-allow-null-value-keywordphysical-files-only

by けやきのじぃじ

あわせて読みたい記事

PAGE TOP