こんにちは、牛田です。
もう、IBM iを使い続けて17年の私ですが、初めて遭遇した事があったので、備忘録として…。
未知との遭遇とは、以下の様なJタイプの不思議なのです。
①物理ファイルPFILE01は、DDSで定義されている6ByteのJタイプのフィールド、FLD001が存在する
②物理ファイルPFILE01は、従属する論理ファイルLFILE01が存在する
③あるRPGプログラムで、物理ファイルPFILE01にWRITEする際に、FLD001に何も転送しない、又は「*BLANK」を転送する
④あるRPGプログラムで、論理ファイルLFILE01にWRITEする際に、FLD001に何も転送しない、又は「*BLANK」を転送する
そして、③と④では、Jタイプにセットされる内容の挙動が異なりました。
③では、X”404040404040”
④では、X”0E404040400F”
常に④の結果を期待していたのですが、SWMAで問い合わせたところ、色々とUSに問い合わせて頂いたり長いこと時間が掛かったのですが、③と④のこの現象はThe・仕様!との事でした。
みなさん、物理ファイルの場合は、該当バイト数の全角スペースを埋める等の対処をしましょう。
面白い事に、一旦”0E、0F”なしで追加されたレコードも、論理ファイルでREAD、UPDATEするだけで、”0E、0F”ありに早変わりします。(物理ファイルと論理ファイルで、Nullバイトマップの挙動が違うとの事でした)
因みにSQLだとまた異なる挙動かと思います。