サポートチーム便り2020.05.13
フィールドに格納された実際のデータの使用桁数(文字数)を取得したい
Question
フィールドの定義している桁数でなく、実際にデータとして格納されたデータ数(文字数)を取得したいのですが、上手くいきません。
この様に実行するとフィールド長の"100"が返ってきてしまいます。
「TEST STRINGS」の文字数である"12"を取得したい場合はどの様にすれば良いのでしょうか?
Answer
組み込み関数%CHECKR(逆向きの検査)をお試しください。
組み込み関数%LEN(長さの入手または設定)では、固定長フィールドの場合はフィールド長が返されます。
その為、実際にSTRに格納されているデータ長ではなくフィールド長の"100"が返されているものと思います。
組み込み関数%CHECKR(逆向きの検査)では、右から左に向かって指定した文字を検索して検索対象外が見つかった位置を返します。
今回は1番目のパラメーターにブランクを、2番目のパラメーターに検査対象のフィールドを指定することで、ブランクではなくなった位置、つまり文字列の最終位置である長さを取得することが出来ます。
サンプルでは固定フォームですが、フリーフォームでも同様に使用することが出来ます。
【IBM Knowledge Center の参考URL】
◆%LEN (長さの入手または設定)
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/rzasd/bblen.htm
◆%CHECKR (逆向きの検査)
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/rzasd/bbchkr.htm#bbchkr
by なんちゃってエンジニア