区切り文字付きインポート・ファイルに関する注 (CPYFRMIMPF コマンド)
区切り文字付きインポート・ファイルの場合、インポート・ファイルのデータは、このトピックで説明される文字とデータ・タイプによって解釈されます。
- ブランク
- ブランクは、以下のように処理されます。
- 文字フィールドのすべての先行ブランクおよび末尾ブランクは、 ストリング区切り文字で囲まれていない限り、RMVBLANK パラメーターに基づいて廃棄されます。
- RMVBLANK *NONE を指定しない限り、ブランクのみで構成されるフィールドは、単一のブランク文字からなるフィールドとして解釈されます。
- 数字データ内にブランクを組み込むことはできません。
- ブランクをフィールドまたはレコードの区切り文字として選択することはできません。
RMVBLANK パラメーターには以下のオプションがあります。
- *NONE: すべての先行ブランクと末尾ブランクが保持されます。
- *LEADING: 先行ブランクが削除されます。これはデフォルト値です。
- *TRAILING: 末尾ブランクが削除されます。
- *BOTH: 先行ブランクと末尾ブランクが削除されます。
注: RMVBLANK パラメーターの指定に基づくブランクの削除は、 ストリング区切り文字よりも優先されます。 - NULL フィールド
- NULL フィールドは、以下のように定義できます。
- 2 つの隣接するフィールド区切り文字 (区切り文字の間にデータがない)。
- 2 つの隣接するストリング区切り文字 (区切り文字の間にデータがない)。
- 後にレコード区切り文字が続くフィールド区切り文字 (間にデータがない) 空ストリング。
フィールドが NULL である場合、以下の説明が当てはまります。
- レコードの出力フィールドが NULL 可能でなく、 インポートが NULL フィールドである場合、 レコードはコピーされず、エラーが表示されます。
- 区切り文字
-
- フィールド区切り文字には、レコード区切り文字と同じ文字を使用することはできません。
- フィールドまたはレコードの区切り文字にブランクを使用することはできません。
- ストリング・エスケープ文字 STRESCCHR(*NONE) が指定されている場合、ストリング区切り文字ですべてのフィールドを囲むことができます。 ストリング区切り文字を文字ストリング内に入れることはできません。
- ストリング区切り文字には、レコード区切り文字と同じ文字を使用することはできません。
- ストリング区切り文字またはストリング・エスケープ文字として、フィールド区切り文字、レコード区切り文字、小数点、日付区切り記号、または時刻区切り記号と同じ文字を使用することはできません。
- コピー元のデータ・タイプが CHARACTER、OPEN、EITHER、
または ONLY である場合、
すべての 2 バイト・データは、
ストリング区切り文字またはシフト文字の中に入っていなければなりません (OPEN、EITHER、
ONLY データ・タイプの場合)。注: ストリング区切り文字は、 先行ブランクや末尾ブランクよりも優先順位が低くなっています。
- 区切り文字のデフォルトは、以下のとおりです。
- ストリング: *DBLQUOTE (二重引用符)
- フィールド: , (コンマ)
- 小数点: . (ピリオド)
- レコード: *EOR (レコードの終わり)
- ストリング区切り文字がストリングに含まれる場合、ストリング内のストリング区切り文字の前に、STRESCCHR パラメーターで指定されたストリング・エスケープ文字を使用してください。
- ストリング・エスケープ文字
- ストリング区切り文字がストリング内に含まれる場合、ストリング区切り文字を (ストリング区切り文字としてではなく) 通常の文字として扱うよう指示するために、STRESCCHR パラメーターを使用してストリング・エスケープ文字を指定できます。
STRESCCHR パラメーターには以下のオプションがあります。
- *NONE: ストリング・エスケープ文字を使用しない。
- *STRDLM: ストリング区切り文字をストリング・エスケープ文字として使用する。
- character-value: character-value をストリング・エスケープ文字として使用する。
- 数字フィールド
-
- 数字フィールドは、10 進様式または指数様式でインポートできます。
- 小数点の右側にあるデータは、出力データ様式によっては切り捨てられる場合があります。
- 小数点は、ピリオドまたはコンマのいずれかです (コマンド・オプション)。
- 符号付き数字フィールドがサポートされています (+ または -)。
- 文字または Varcharacter フィールド
-
- 出力フィールド内に入りきらないフィールドは切り捨てられます。 システムは、診断メッセージを送信します。
- 空ストリングは、 区切り文字間にデータがない 2 つのストリング区切り文字として定義されます。
- ある文字を開始または終了のストリング区切り文字としてシステムに認識させるには、 RMVBLANK オプションの適用後にその文字がフィールド内の最初または最後の文字にならなければなりません。 たとえば、区切り文字として引用符 (') が付いている 'abc' は、abc と同じです。
- IGC または VarIGC フィールド
-
- データは、コピー元ファイルからコピー先ファイルにコピーされます。 データのいずれかが無効である場合、マッピング・エラーが生成されます。
- シフトアウト文字とシフトイン文字との間にあるデータは、2 バイト・データとして処理されます。 また、このデータは、区切り文字としては解析されません。 この場合、シフト文字は "ストリング区切り文字" になります。
- グラフィック、VarGraphic フィールド
- データは、コピー元ファイルからコピー先ファイルにコピーされます。
- CCSID
-
- コピー元ファイルのデータは、
コピー元ファイルの CCSID によってバッファーに読み取られます。
バッファー内のデータは検査され、
コピー先ファイルに書き込まれます。
コピー先ファイルの CCSID が使用されない限り、
オープン・コピー先ファイルの CCSID は、
コピー元ファイルの値に設定されます。
コピー先ファイル CCSID が使用されると、 データはその CCSID に変換されます。 コピー先ファイル・フィールドの CCSID が 65535 であれば、コピー先 CCSID (TOCCSID) パラメーターで指定された CCSID にデータが変換されます。
コピー元ファイルがテープ・ファイルであり、 FROMCCSID(*FILE) が指定されている場合、 以下のいずれかの制限が適用されます。- ジョブ CCSID が使用されます。
- コピー元ファイル CCSID がユーザーによって要求されます。
- コマンドで渡された文字データ (区切り文字) は、 コピー元ファイルの CCSID に変換されます。 これにより、 コピー元ファイル・パラメーターの文字データとコマンド・パラメーターの文字データとの互換性が実現します。
- コピー元ファイルのデータは、
コピー元ファイルの CCSID によってバッファーに読み取られます。
バッファー内のデータは検査され、
コピー先ファイルに書き込まれます。
コピー先ファイルの CCSID が使用されない限り、
オープン・コピー先ファイルの CCSID は、
コピー元ファイルの値に設定されます。
- 日付フィールド
-
- IBM® i オペレーティング・システムによってサポートされているすべての日付様式をインポートすることができます (*ISO、*USA、*EUR、*JIS、*MDY、*DMY、 *YMD、*JUL、および *YYMD)。
- 日付フィールドをタイム・スタンプ・フィールドにコピーすることができます。
- 時刻フィールド
-
- IBM i オペレーティング・システムによってサポートされているすべての時刻様式をインポートできます (*ISO、*USA、*EUR、*JIS、*HMS)。
- 時刻フィールドをタイム・スタンプ・フィールドにコピーすることができます。
- 日時区切り記号
- 日時フィールドで有効なすべての区切り記号がサポートされます。
- タイム・スタンプ・フィールド
- タイム・スタンプ・インポート・フィールドは、26 バイトでなければなりません。 インポートでは、 時刻部分にピリオドがあり、タイム・スタンプの日付の部分と時刻の部分の間にダッシュがあることが確認されます。
- LOB フィールド
- LOB データ・フィールドでは、
LOB データを入れるための 2 次ストリーム・ファイルの使用が必要になります。
インポートされたデータ・ファイルには、
LOB データが入っているストリーム・ファイルの名前がリストされます。
データ・ファイル内の各フィールドのオフセットを記述したフィールド定義ファイル (FDF) には、
LOB ファイル名フィールドのオフセット (LOB フィールドそのものではない) も記述されます。
LOB データのインポート例:
FDF ファイル:
COLCHAR10 1 10 42 COLLOB 12 40 44 *ENDデータ・ファイルのレコード長は 44 文字になり、 内容は以下のようなデータになります。
0 1 2 3 4 12345678901234567890123456789012345678901234 aaaaaaaaaa /lobdata/lob1.dat N N bbbbbb /lobdata/lob2.dat N N /lobdata/lob3.dat Y N cccccccccc N Y注: インポートされたデータ・ファイルの各レコードは、 以下のようになります。- 文字 1 から 10 は、COLCHAR10 という名前の列のデータであり、バイト位置 42 に NULL 標識が入ります。
- 文字 12 から 40 は、COLLOB という名前の列のデータであり、バイト位置 44 に NULL 標識が入ります。 COLLOB の値は、 LOB データを含むファイルの名前です。
- この例では、 インポートする実際の LOB データを含んだデータ・ファイルが 3 つあります (lob1.dat、lob2.dat、lob3.dat)。
- フィールド数のミスマッチ
- コピー元ファイルとコピー先ファイルに同じ数のフィールドがない場合、 データが切り捨てられてコピー先ファイル・サイズが小さくなるか、 または余分のコピー先ファイル・フィールドに NULL 値が入ります。 フィールドに NULL 値を入れることができない場合、 エラー・メッセージが発行されます。
- 複数のスレッド
- データをコピーするために使用されるスレッドの数は、
CHGQRYA コマンドの DEGREE(*NBRTASKS) パラメーターによって決まります。
複数のスレッドが使用される場合、アプリケーションは、
データをコピーするためにバッチ・スレッドを使用します。
ユーザーは、これらのバッチ・スレッドを変更、保留、または終了することができます。
コピー操作は、開始したすべてのバッチ・スレッドが完了するまで完了しません。
相対レコード番号は、 単一スレッドが使用され、 インポート・ファイルに削除レコードが含まれていない場合にのみ維持されます。 コピー元ファイルが分散物理ファイルまたは論理ファイルである場合、システムでは、単一プロセスでコピー操作が実行されます。
レコード数が 50 000 より少ないファイルは、1 つのジョブのみを使用します。