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)

説明

length

整数

ソース文字列のバイト数です。長さが定義されたフィールドを指定することもできます。

source_string

文字

変換する文字列です。文字列は一重引用符 (') で囲みます。文字列を含むフィールドまたは変数を指定することもできます。

decimal

整数

変換する文字の ASCII の 10 進コードです。

decvalue

整数

decimal の代替文字として使用する文字の ASCII の 10 進コードです。

output

文字

結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。

ブランクをアンダースコア (_) に変換 (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

リクエストは、次のように処理されます。

  1. CRTFORM 画面で、従業員 ID の姓名および所属情報の入力が要求されます。アクセント付き文字 È が含まれる名前が表示されるたびに、アスタリスク (*) を置換するよう要求されます。
  2. 次のデータを入力します。

    EMPLOYEE ID:999888777

    FIRST_NAME:AD*LE

    LAST_NAME:MOLI*RE

    DEPARTMENT:SALES

  3. プロシジャは、データソースからこの従業員 ID を検索します。見つからない場合、リクエスト処理が続行されます。
  4. 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
  5. プロシジャは、データソースにデータを格納します。

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
>

リクエストは、次のように処理されます。

  1. 従業員 ID の姓名および所属情報の入力が要求されます。次のデータを入力します。

    EMP_ID:224466880

    LAST_NAME:BRADLEY; JR.

    FIRST_NAME:JOHN

    DEPARTMENT:MIS

  2. リクエストは、データソースから従業員 ID 224466880 を検索します。この ID が見つからない場合、トランザクションは続行されます。
  3. CTRAN は、「BRADLEY; JR.」のセミコロン (;) をカンマ (,) に変換します。姓が「BRADLEY, JR.」に変換されます。
  4. リクエストは、このトランザクションをデータソースに追加します。
  5. このリクエストは、セミコロン (;) を変換後のカンマ (,) として表示します。
    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