9.88 FORMAT_STRING

LANSA

9.88 FORMAT_STRING


Þ 注:組み込み関数の規則

この組み込み関数は、入力フォーマット・パターンから文字列を生成して、その文字列を戻します。フォーマット・パターンはテキストおよびフィールド値で構成することができます。編集オプションをフィールド値に適用することもできます。

特記:前にコロン(:)が付いたすべての文字はフィールド名として扱われ、()、スペース、コロンのいずれかの文字で終了します。

各製品の対応

LANSA/AD

使用可

Visual LANSA for Windows

使用可

Visual LANSA for Linux

使用可

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

フォーマット・パターン

パターンの構文とオプションについては、「技術ノート」を参照してください。

フィールドは、:fieldと指定します。

任意のフォーマット・オプションをフィールドに追加することができます。フィールド名の直後にオプションを追加して、括弧"()"で囲みます。

(editcode,x):フィールド値に編集コードを適用します(x=有効なLANSA編集コード)。有効な編集コードの一覧については、標準フィールド編集コードを参照してください。

(substr,n1,n2):フィールド値にサブストリングを適用します(n1=開始位置、n2=長さ)。
(triml):フィールド値から先行のブランクを削除します。
(trim):フィールド値から後続のブランクを削除します。
(trimall):フィールド値から先行のブランクと後続のブランクを削除します。
(upper):フィールド値を大文字に変換します。
(lower):フィールド値を小文字に変換します。

1

無制限

 

 

2

A

任意

DBCS対応

デフォルト:非対応

YES = DBCS対応にする

注:サブストリングの場合、バイト数ではなく文字数でカウントされます。

3

3

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

フォーマット済み文字列

1

無制限

 

 

2

A

任意

戻りコード

OK = アクションが完了した

ER = エラーが発生した

2

2

 

 

技術ノート

·         フィールド名の前にはコロン記号(:)を付けます。
フォーマット・パターンの例 =
従業員 :givename :surname の番号 :EMPNO が見つかりませんでした

戻されるフォーマット済み文字列 =
従業員 DARREN BROWN の番号 A0001 が見つかりませんでした

フィールドgivenameの値が"DARREN"、フィールドsurnameの値が"BROWN"、フィールドempnoの値が"A0001"の場合です。

·         フォーマット・パターンで使用されるフィールドはRDMLファンクションで使用してはいけません。
フィールドはリポジトリまたはファクション内部で定義することができます。

·         戻されるフォーマット済み文字列でコロン記号(:)を使うには、入力フォーマット・パターンでコロン記号を2個使用します。
フォーマット・パターンの例 =
従業員番号:::empno

戻されるフォーマット済み文字列 =
従業員番号:A0001

·         フィールド値の直後に文字を含めるには、括弧()を使用します。
フォーマット・パターンの例 =
従業員番号:::empno()NoSpace

戻されるフォーマット済み文字列 =
従業員番号:A0001NoSpace

·         フォーマット・オプションは、フィールド値に適用することもフォーマット・パターンに指定することもできます。
複数オプションを1つのフィールド値に適用することもできます。
フォーマット・オプションはフィールド名の直後に追加して、括弧"()"の中に入れる必要があります。

フォーマット・パターンの例 =
従業員 :givename(substr,1,1 UPPER).:SURNAME(trim upper)

戻されるフォーマット済み文字列 =
従業員 D. BROWN

·         フィールド値に複数のフォーマット・オプションを指定する場合、オプションは以下の順序で適用されます。
1. 編集コード(editcode)
2. サブストリング(substr)
3. 後続の切り捨て(trim)
4. 先行の切り捨て(triml)
5. 全切り捨て(trimall)
6. 小文字(lower)
7. 大文字(upper)

·         編集コードのフォーマット・オプションは数値フィールドだけに適用されます。
編集コードのフォーマット・オプションが文字列に適用された場合は無視されます。

·         先行のゼロを抑制する編集コードでは、ゼロが削除されてブランクが先行します。

DBCSに関する考慮事項

フォーマット・パターンのテキスト部分にはDBCSまたはDBCS混在の文字列を挿入することができます。ただし、:fieldの指定はシングル・バイト・モードで入力する必要があります。また、テキスト部分は、シフト・アウト/シフト・イン文字を正しく組み合わせて完全な文字列にする必要があります。

デフォルトでは、サブストリング・フォーマット・オプションはDBCS対応ではありません。DBCS対応にするには、2番目の任意指定の引数を'YES'に設定します。開始位置と長さは、バイト数ではなく文字数でカウントされ、シフト・イン/シフト・アウト・バイトはカウントされません。

この例では、ファイルから情報を取得して、さまざまな行を標準ブラウズ・リストにフォーマットしています。各種フォーマット・オプションを使ってフィールド値をフォーマットしています。

FUNCTION   OPTIONS(*DIRECT)                                         
DEFINE     FIELD(#STRING) TYPE(*CHAR) LENGTH(75) COLHDG('Details') INPUT_ATR(LC)
DEFINE     FIELD(#PATERN) TYPE(*CHAR) LENGTH(256) INPUT_ATR(LC)     
DEF_LIST   NAME(#BRWLST) FIELDS((#STRING))                          
**********                                                          
SELECT     FIELDS((#EMPNO) (#GIVENAME) (#SURNAME) (#STARTDTE) (#TERMDATE) (#ADDRESS1) (#ADDRESS2) (#ADDRESS3) (#SALARY) (#POSTCODE)) FROM_FILE(PSLMST)
CHANGE     FIELD(#PATERN) TO('''EMPLOYEE:: :empno :GIVENAME(substr,1,1 upper).:surname(upper trim)''')
EXECUTE    SUBROUTINE(ADDTOBRW)                                     
CHANGE     FIELD(#PATERN) TO('''          Start :startdte(editcode ,Y) Salary $:salary(editcode,J)''')
EXECUTE    SUBROUTINE(ADDTOBRW)                                    
CHANGE     FIELD(#PATERN) TO('''          Address:: :ADDRESS1(trim) :ADDRESS2(TRIM)''')
EXECUTE    SUBROUTINE(ADDTOBRW)                                    
CHANGE     FIELD(#PATERN) TO('''                   :aDDRESS3(trima ll) :postcode(editcode,4)''')
EXECUTE    SUBROUTINE(ADDTOBRW)                                    
ENDSELECT                                                          
**********                                                         
DISPLAY    BROWSELIST(#BRWLST)                                     
RETURN                                                             
********** -------------------------------------------             
SUBROUTINE NAME(ADDTOBRW)                                          
USE        BUILTIN(FORMAT_STRING) WITH_ARGS(#PATERN) TO_GET(#STRING)
ADD_ENTRY  #BRWLST                                                 
ENDROUTINE                                                         .