CTRAN - 文字を他の文字に変換
CTRAN 関数は、文字列内の文字を 10 進数に基づいて他の文字に変換します。この関数は、利用できない文字、入力が難しい文字、またはキーボードにない文字を置換文字列によって入力するときに役立ちます。カンマ (,) やアポストロフィ (') など、ダイアログマネージャ -PROMPT コマンドに応答する際に、入力が難しい文字の入力に使用することもできます。入力文字を一重引用符 (') で囲む必要もなくなります。
CTRAN を使用するには、対応する内部マシンの 10 進表現の知識が必要です。文字コード変換表はプラットフォームに依存するため、使用されるエンコード (ASCII または Unicode) は、プラットフォームおよび構成オプションによって異なります。
Unicode 構成の場合、この関数は次の範囲の値を使用します。
- 1 バイト文字 - 0 (ゼロ) から 255
- 2 バイト文字 - 256 から 65535
- 3 バイト文字 - 65536 から 16777215
- 4 バイト文字 - 16777216 から 4294967295
文字を他の文字に変換
CTRAN(length, source_string, decimal, decvalue, output)
整数
ソース文字列のバイト数です。長さが定義されたフィールドを指定することもできます。
文字
変換する文字列です。文字列は一重引用符 (') で囲みます。文字列を含むフィールドまたは変数を指定することもできます。
整数
変換する文字の ASCII の 10 進コードです。
整数
decimal の代替文字として使用する文字の ASCII の 10 進コードです。
文字
結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。
ブランクをアンダースコア (_) に変換 (ASCII プラットフォーム)
CTRAN 関数は、ADDRESS_LN3 のブランク (ASCII 10 進数は 32) をアンダースコア (ASCII 10 進数は 95) に変換し、ALT_ADDR に格納します。
TABLE FILE EMPLOYEE PRINT ADDRESS_LN3 AND COMPUTE ALT_ADDR/A20 = CTRAN(20, ADDRESS_LN3, 32, 95, ALT_ADDR); BY EMP_ID WHERE TYPE EQ 'HSM'; END
出力結果は次のとおりです。
EMP_ID ADDRESS_LN3 ALT_ADDR ------ ----------- -------- 117593129 RUTHERFORD NJ 07073 RUTHERFORD_NJ_07073_ 119265415 NEW YORK NY 10039 NEW_YORK_NY_10039___ 119329144 FREEPORT NY 11520 FREEPORT_NY_11520___ 123764317 NEW YORK NY 10001 NEW_YORK_NY_10001___ 126724188 FREEPORT NY 11520 FREEPORT_NY_11520___ 451123478 ROSELAND NJ 07068 ROSELAND_NJ_07068___ 543729165 JERSEY CITY NJ 07300 JERSEY_CITY_NJ_07300 818692173 FLUSHING NY 11354 FLUSHING_NY_11354
MODIFY によるアクセント記号付き E の挿入
MODIFY リクエストを使用すると、アクセント記号付きの文字 E を含む新しい従業員名 (例、Adèle Molière) を入力することができます。対応する EBCDIC 10 進コードは、アスタリスク (*) が 92、È が 159 です。
ホットスクリーン機能を使用する場合、表示できない文字がいくつかあります。ホットスクリーンに表示されない文字がある場合、SET SCREEN=OFF でホットスクリーンを無効にし、RETYPE コマンドを発行します。ターミナルで表示できる場合は、その文字が表示されます。特殊文字の表示は、使用するソフトウェアとハードウェアに依存します。すべての特殊文字が表示可能であるとは限りません。
以下は、リクエストの例です。
MODIFY FILE EMPLOYEE
CRTFORM
"***** NEW EMPLOYEE ENTRY SCREEN *****"
" "
"ENTER EMPLOYEE'S ID: <EMP_ID"
" "
"ENTER EMPLOYEE'S FIRST AND LAST NAME"
"SUBSTITUTE *'S FOR ALL ACCENTED E CHARACTERS"
" "
"FIRST_NAME: <FIRST_NAME LAST_NAME: <LAST_NAME"
" "
"ENTER THE DEPARTMENT ASSIGNMENT: <DEPARTMENT"
MATCH EMP_ID
ON MATCH REJECT
ON NOMATCH COMPUTE
FIRST_NAME/A10 = CTRAN(10, FIRST_NAME, 92, 159, 'A10');
LAST_NAME/A15 = CTRAN(15, LAST_NAME, 92, 159, 'A15');
ON NOMATCH TYPE "FIRST_NAME: <FIRST_NAME LAST_NAME:<LAST_NAME"
ON NOMATCH INCLUDE
DATA
END
実行例は次のとおりです。
***** NEW EMPLOYEE ENTRY SCREEN ***** ENTER EMPLOYEE'S ID:999888777 ENTER EMPLOYEE'S FIRST AND LAST NAME SUBSTITUTE *'S FOR ALL ACCENTED E CHARACTERS FIRST_NAME:AD*LE LAST_NAME:MOLI*RE ENTER THE DEPARTMENT ASSIGNMENT:SALES
リクエストは、次のように処理されます。
- CRTFORM 画面で、従業員 ID の姓名および所属情報の入力が要求されます。アクセント付き文字 È が含まれる名前が表示されるたびに、アスタリスク (*) を置換するよう要求されます。
- 次のデータを入力します。
EMPLOYEE ID:999888777
FIRST_NAME:AD*LE
LAST_NAME:MOLI*RE
DEPARTMENT:SALES
- プロシジャは、データソースからこの従業員 ID を検索します。見つからない場合、リクエスト処理が続行されます。
- CTRAN は、姓と名に含まれているアスタリスク (*) をともに È に変換します (例、ADÈLE MOLIÈRE)。
***** NEW EMPLOYEE ENTRY SCREEN ***** ENTER EMPLOYEE'S ID: ENTER EMPLOYEE'S FIRST AND LAST NAME SUBSTITUTE *'S FOR ALL ACCENTED E CHARACTERS FIRST_NAME: LAST_NAME: ENTER THE DEPARTMENT ASSIGNMENT: FIRST_NAME:ADÈLE LAST_NAME:MOLIÈRE
- プロシジャは、データソースにデータを格納します。
MODIFY によるカンマの挿入
この MODIFY リクエストは、EMPLOYEE データソースに新しい従業員レコードを追加します。PROMPT コマンドは、フィールド単位でデータ入力を要求します。CTRAN は、名前のカンマ (') を、一重引用符 (') で囲まずに入力することを可能にします。カンマ (,) を入力する代わりに、セミコロン (;) を入力します。CTRAN は、セミコロン (;) をカンマ (,) に変換します。EBCDIC の 10 進コードは、セミコロン (;) は 94、カンマ (,) は 107 です。
以下は、リクエストの例です。
MODIFY FILE EMPLOYEE
PROMPT EMP_ID LAST_NAME FIRST_NAME DEPARTMENT
MATCH EMP_ID
ON MATCH REJECT
ON NOMATCH COMPUTE
LAST_NAME/A15 = CTRAN(15, LAST_NAME, 94, 107, 'A15');
ON NOMATCH INCLUDE
DATA
実行例は次のとおりです。
> EMPLOYEEFOCUS A ON 04/19/96 AT 16.07.29 DATA FOR TRANSACTION 1 EMP_ID = 224466880 LAST_NAME = BRADLEY; JR. FIRST_NAME = JOHN DEPARTMENT = MIS DATA FOR TRANSACTION 2 EMP_ID = end TRANSACTIONS: TOTAL = 1 ACCEPTED= 1 REJECTED= 0 SEGMENTS: INPUT = 1 UPDATED = 0 DELETED = 0 >
リクエストは、次のように処理されます。
- 従業員 ID の姓名および所属情報の入力が要求されます。次のデータを入力します。
EMP_ID:224466880
LAST_NAME:BRADLEY; JR.
FIRST_NAME:JOHN
DEPARTMENT:MIS
- リクエストは、データソースから従業員 ID 224466880 を検索します。この ID が見つからない場合、トランザクションは続行されます。
- CTRAN は、「BRADLEY; JR.」のセミコロン (;) をカンマ (,) に変換します。姓が「BRADLEY, JR.」に変換されます。
- リクエストは、このトランザクションをデータソースに追加します。
- このリクエストは、セミコロン (;) を変換後のカンマ (,) として表示します。
TABLE FILE EMPLOYEE PRINT EMP_ID LAST_NAME FIRST_NAME DEPARTMENT IF EMP_ID IS 224466880 END
出力結果は次のとおりです。
EMP_ID LAST_NAME FIRST_NAME DEPARTMENT ------ --------- ---------- ---------- 224466880 BRADLEY, JR. JOHN MIS