最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

3.11.TRNTBLも使ってみよう

[ Previous ] [ HOME ] [ Upper ] [ Next ]


訪問者の方から、「これがうまくいかない」といった類の質問に答えているときに、知ったDDSのキーワードです。TRNTBLというキーワードで、論理ファイルのフィールドレベルで使用できます。Q897337290はSJISからEBCDICへ変換する「テーブルオブジェクト」です。

     A*------------------------------------*                     
     A          R PSJIS1                                         
     A*------------------------------------*                     
     A                                      PFILE(PSEBC)         
     A            PSEBC              I      TRNTBL(Q897337290)            

trntblpflf.gif (16260 バイト)

ここでは、論理ファイルは一個のフィールドをしているだけです(私自身、このキーワードをデバッグ(AS/400上でのEBCDIC→SJISの変換の確認)にしか使っていなかったからです)が、勿論、全てのフィールドにも指定できます。複数のフィールドを参照するときはその分、DDSに記述しなければならず、これがちょっと面倒ですね。また、変換テーブルも99個まで指定できるらしいですね(下のマニュアルからの引用参照)。

注意すべきは、フィールドは、漢字属性を持っていてはいけないということです。「J」は言うに及ばず、「o」、「E」もだめ。そもそも、2バイトの文字を変換テーブルで変換は出来ないのです。但し、TRNTBLが参照するフィールドが漢字だめ(LFのコンパイルエラー)なだけで、論理ファイルの基礎となる物理ファイルは「漢字可能ファイル」でも大丈夫です。

いったん出来た論理ファイルをCPYFで別ファイルにコピーしても、変換結果がコピーされます。有効利用されてはいかがでしょう?

参考ページ:5.8.*TBLの作成とSJIS,EBCDIC変換

AS/400 データ記述仕様書より

2.4.44 TRNTBL(変換テーブル)- 論理ファイルのみ 

これはフィールド・レベルのキーワードで、PFILE キーワードまたは JFILE キーワードに指定した物理ファイルとプログラムとの間でこのフィールドの受渡しが行われる際に使用される変換テーブルを指定するために使用します。このフィールドは文字フィールドでなければならず、その桁数を論理ファイルで定義し直すことはできません。TRNTBL キーワードとともに CONCAT キーワードと指定する場合には、CONCAT キーワードで指定するフィールドは、すべて文字フィールドでなければなりません。

キーワードの形式は次のとおりです。

TRNTBL([library-name/]translation-table-name)

translation-table-name は必須パラメーター値であり、library-name は任意指定です。ライブラリー名を指定しなかった場合には、OS/400 プログラムにより、ファイル作成時に有効なライブラリー・リスト (*LIBL) が使用されます。

このキーワードは、入力専用(38 桁目に I が指定されている)フィールドまたは非入出力(38 桁目にN が指定されている)フィールドである文字フィールドに対してだけ有効です。

16 進数フィールド(35 桁目が H)については、TRNTBL キーワードは指定できません。また、日付、時刻、またはタイムスタンプ・フィールド (35 桁目が L、T、または Z) に TRNTBL キーワードを指定してはなりません。

同一論理ファイル内の異なるフィールドについて、最高 99 個の異なる変換テーブルを指定することができます。

変換は、物理ファイルから該当のフィールドを読み取る時点で行われます。したがって、論理ファイルで指定されているすべての機能(キー・フィールドの順序付け、選択/除外処理、またはレコードの連結など)は、変換後のデータに基づいて行われます。

TRNTBL キーワードは、論理ファイルから戻されるレコード内のデータを変更します。ALTSEQ キーワードは、論理ファイルから戻されるレコードの順序だけを変更します。

TRNTBL キーワードは、次の点を除いて、CHRID キーワードとよく似ています。

  • TRNTBL キーワードの場合は、使用する変換テーブルの名前を指定しますが、 CHRID キーワードの場合はこれは指定しません。
  • TRNTBL キーワードの場合は、プログラムが論理ファイルを読み取る時点で、プログラムへの入力としてのデータを変更します。CHRID キーワードの場合は、特定の操作に表示または印刷するデータを変更します。プログラムが更新後のデータを使用する(たとえば IF-THEN-ELSE ステートメントや、COBOL の SORT ステートメントなどで)場合には、TRNTBL キーワードを使用します。プログラムが論理ファイルからのデータだけを処理する場合には、プログラムで使用する表示装置ファイルまたは印刷装置ファイルに CHRID キーワードを指定する必要はありません。

論理ファイル作成 (CRTLF) コマンドで FILETYPE(*SRC) を指定した場合には、 TRNTBL キーワードは無効です。

注:

1. TRNTBL キーワードを指定する場合には、論理ファイルの該当フィールドの桁数は、物理ファイルの対応するフィールドの桁数と同じでなければなりません。

2. ファイルの作成時点で、ユーザーは、所要の変換テーブルについての使用権限を持っていなければなりません。変換テーブルは、テーブルの作成 (CRTTBL)コマンドを用いて作成します。

3. TRNTBL キーワードで指定する変換テーブルは、論理ファイルの作成時点でだけ参照されます。したがって、変換テーブルに対する変更は、論理ファイルを再作成するまでは、論理ファイルに影響を及ぼすことはありません。

 

[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送