LoginSignup
4
0

V7R5新機能(%LEFT 組込み関数

Last updated at Posted at 2023-12-18

V7R5 TR3で提供された %LEFT を使ってみた。%RIGHT も同時にリリースされているが、右になるだけなので 検証は %LEFT のみ。

コードサンプル抜粋

//   D*-‚********************************************************************
//   D*-‚* 変数定義                                                      **
//   D*-‚********************************************************************
DCL-S  WTIMESTAMP    TIMESTAMP                ;  //タイムスタンプ
DCL-S  WDATE8        ZONED(8:0)               ;  //日付
DCL-S  WTIME6        ZONED(6:0)               ;  //時刻

DCL-S  W#STR11       CHAR(32)                 ;  //文字列(固定長
DCL-S  W#STR12       VARCHAR(32)              ;  //文字列(可変長

DCL-S  W#STR21       VARCHAR(32) CCSID(*UTF8) ;  //文字列(UTF-8可変長
DCL-S  W#STR22       VARCHAR(32) CCSID(*UTF8) ;  //文字列(UTF-8可変長
//   C*-‚********************************************************************
//   C*-‚* メインルーチン                                                **
//   C*-‚********************************************************************

//初期処理
EXSR      @INZ                         ;

//‚左より取得
W#STR11 = 'ABCDEFGHIJKL'               ;
W#STR12 = %LEFT(W#STR11  : 08 )        ;
DSPLY W#STR12                          ;


W#STR11 = '牛田 吉樹'               ;
W#STR12 = %LEFT(W#STR11  : 08 )        ;
DSPLY W#STR12                          ;


W#STR21 = '牛田 吉樹'               ;
W#STR22 = %LEFT(W#STR21  : 08 )        ;
DSPLY W#STR22                          ;

結果、感想

留意点は、バイト数指定のため、UTF-8 の文字列は取得箇所が異なる点。
あとこの手の文字列操作系関数は、SBCS圏内の方々には重宝するのだろうが、DBCS圏内の我々は、結局 x0e,x0f の調整が必要となり、皆さん自作サブルーチンを作る状況は変わらないと思われます。サンプルコードでも想定どおり千切れています。
SBCSと判っているケースでは、コードの見通しが良いかも知れません。文字列に関しては、DBCS圏内の永遠のテーマに思えてしまいますね。

2023-12-05_210519.png

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0