Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/substring_e.htm]
現在地:

...

7.122.2 SUBSTRING の使用例

例1:以下の表に、フィールド#Aが長さ10文字の英数字フィールド、フィールド#Bが長さ5文字の英数字フィールドの場合に、さまざまなSUBSTRINGコマンドを使用したときの結果を示します。 例1:以下の表に、フィールド#Aが長さ10文字の英数字フィールド、フィールド#Bが長さ5文字の英数字フィールドの場合に、さまざまなSUBSTRINGコマンドを使用したときの結果を示します。

SUBSTRING実行前の#A

SUBSTRING実行前の#B

SUBSTRINGコマンド

SUBSTRING実行後の#B

ABCDEFGHIJ

XXXXX

FIELD(#A) INTO_FIELD(#B)

ABCDE

ABCDEFGHIJ

XXXXX

FIELD(#A 1 1) INTO_FIELD(#B)

A

ABCDEFGHIJ

XXXXX

FIELD(#A 1 1) INTO_FIELD(#B 1 1)

AXXXX

ABCDEFGHIJ

XXXXX

FIELD(#A 2 2) INTO_FIELD(#B)

BC

ABCDEFGHIJ

XXXXX

FIELD(#A 2 2) INTO_FIELD(#B 2)

XBC

ABCDEFGHIJ

XXXXX

FIELD(#A 2 2) INTO_FIELD(#B 2 2)

XBCXX

ABCDEFGHIJ

XXXXX

FIELD(#A 9 1) INTO_FIELD(#B)

I

ABCDEFGHIJ

XXXXX

FIELD(#A 9 2) INTO_FIELD(#B)

IJ

ABCDEFGHIJ

XXXXX

FIELD(#A 9 2) INTO_FIELD(#B 2)

XIJ

ABCDEFGHIJ

XXXXX

FIELD(#A 9 2) INTO_FIELD(#B 2 2)

XIJXX

 
例2:SUBSTRINGコマンドを使用して、#DDMMYYという6桁の数値タイプ日付フィールドの形式をDDMMYYからYYMMDDに変更します。
DEFINE FIELD例2:SUBSTRINGコマンドを使用して、#DDMMYYという6桁の数値タイプ日付フィールドの形式をDDMMYYからYYMMDDに変更します。

     DEFINE FIELD(#WORK02)

...

 TYPE(*CHAR)

...

 LENGTH(2)

...


SUBSTRING FIELD(#DDMMYY 1 2) INTO_FIELD(#WORK02)

...


SUBSTRING FIELD(#DDMMYY 5 2) INTO_FIELD(

...

#DDMMYY 1 2)
SUBSTRING FIELD(#WORK02)

...

     INTO_FIELD(

...

#DDMMYY 5 2)

...

...


例3:以下のRDMLプログラムは、ユーザーが入力した最大20個の製品番号を、#PRODUCTSという1つの長い文字列に保管し、入力完了後にそのすべての製品番号を印刷します。 

     DEFINE FIELD(#PRODUCTS)

...

 TYPE(*CHAR)

...

 LENGTH(200)

...


DEFINE FIELD(#ENTERED)

...

  TYPE(*DEC)

...

 LENGTH(3)

...

 DECIMALS(0) DEFAULT(0)

...


DEFINE FIELD(#I)

...

        TYPE(*DEC)

...

 LENGTH(3)

...

 DECIMALS(0)

...


DOUNTIL '(

...

#PRODNO =

...

 *BLANKS)

...

 *

...

OR (

...

#ENTERED =

...

 20)'

...


CHANGE  #PRODNO *BLANKS
REQUEST FIELDS(#PRODNO)
IF      '#PRODNO *NE *BLANKS'
CHANGE  #ENTERED ('#ENTERED + 1')
CHANGE  #I '((#ENTERED - 1) * 10) + 1'
SUBSTRING FIELD(#PRODNO) INTO_FIELD(#PRODUCTS #I 10)
ENDIF
ENDUNTIL
DOWHILE '#ENTERED *GT 0'
  CHANGE  #I '((#ENTERED - 1) * 10) + 1'
SUBSTRING FIELD(#PRODUCTS #I 10) INTO_FIELD(#PRODNO)
FETCH  FIELDS(#DESCRIPT #PRICE #QUANTITY) FROM_FILE(PRODMAST) WITH_KEY(#PRODNO)
UPRINT FIELDS(#PRODNO #DESCRIPT #PRICE #QUANTITY)
CHANGE #ENTERED ('#ENTERED - 1')
ENDWHILE

...