cp - ファイルをコピーする

形式

変数 _UNIX03=YES が設定されている場合
  • cp [–cfimMUv] [–p|F format|B|T|X] [-W seqparms=params] [–Z] [–O u | c=codeset] file1 file2
  • cp [–ACcfimMUv] [–p|F format|B|T|X] [–S suffix] [–Z] [–O u | c=codeset] file …file … directory
  • cp –R [-H|L|P] [–cfimp] [–Z] [–O u | c=codeset] source… directory
  • cp –r [-H|L|P] [–cfimp] [–Z] [–O u | c=codeset] source… directory
変数 _UNIX03 が設定されていないか、"YES" でない場合
  • cp [–cfimMUv] [–p|F format|B|T|X] [–P params] [-W seqparms=params] [–Z] [–O u | c=codeset] file1 file2
  • cp [–ACcfimMUv] [–p|F format|B|T|X] [–S suffix] [–Z] [–O u | c=codeset] file …file … directory
  • cp –R [-H|L] [–cfimp] [–Z] [–O u | c=codeset] source… directory
  • cp –r [-H|L] [–cfimp] [–Z] [–O u | c=codeset] source… directory

説明

cp は、ファイル (複数でもよい) をそのコマンド行の最後の引数で指定された ターゲットへコピーします。 ターゲットが既存のファイルの場合は、cp はそれを上書きします。ターゲットが存在しない場合は、cp はそれを作成します。ターゲット・ファイルが存在し ていて、書き込み許可がない場合は、cp はアクセスを拒否し、次のコピーを続行します。

3 つ以上のパス名を指定する場合は、最後のパス名 (すなわち、ターゲット) はディレクトリーでなければ なりません。ターゲットがディレクトリーの場合は、cp はソースをそのディレクトリーに コピーし、ソース・パス名の最後のコンポーネントによって与えられた名前を付けます。

cp を使用して、MVS™ データ・セットとの間でファイルをコピーす ることもできます。コピーするファイルを複数指定する場合には、ターゲット (コマンド行の最 後のパス名) はディレクトリーまたは区分データ・セットのいずれかでなけ ればなりません。ターゲットが MVS 区分データ・セットの場合、ソースを UNIX ディレクトリ ーにすることはできません。

cp は世代別データ・グループ (GDG) 間のコピーをサポートしていません。 これらの MVS データ・セットを使用するには、 実際のデータ・セット名を指定する必要があります。また、cp は一時 PDSE へのコピーもサポートしていません。

レコードをコピーするとき、ストリング " ¥n" はストリング "¥n" と同様にコピーさ れます。すなわち、両方とも "¥n" として読み戻されます。ここで、"¥n" は 、z/OS XL C++ が単一ブランクを含むレコードをファイルに書き込むことを示 します (z/OS XL C/C++ のデフォルトの動作です)。 出力内の他のブランクはすべてブランクとして読み戻され、空の (長さがゼ ロの) レコードは入力では無視されます。ただし、cp の呼び出し前に 環境変数 _EDC_ZERO_RECLEN が Y に 設定されていれば、空のレコードは単一改行文字として扱われ、無視されません。また、_EDC_ZERO_RECLEN が Y に設定されていれば、 単一改行文字は空のレコードしてファイルに書き込まれ、単一ブランクは "¥n" で表されます。

以下のコピーが可能です。
  • あるファイルを作業ディレクトリーの別のファイルへ
  • あるファイルを別のディレクトリーの新しいファイルへ
  • ディレクトリーとファイルのセットをファイル・システムの別の場所へ
  • UNIX ファイルを MVS データ・セットへ
  • MVS データ・セットをファイル・システムへ
  • MVS データ・セット間で

オプション

–A
すべての接尾部 (最初のピリオドからターゲットの終わりまで) を切 り捨てることを指定します。–A は、–M および –C オプションに優先しま す。–A が最後に指定されたオプションであると、–S は オフになります。
–B
コピーするデータにバイナリー・データが含まれていることを指定し ます。–B を指定すると、cp の操作で <改行> 文字または DBCS データの特性が考慮されません。(このタイプの動作は UNIX システム間でコピーする際に一般的に見られるものです。)–B は、–F–X、および –T と互いに排他的であるため、これらのオプションを複数指定すると、エラーになります。
–C
MVS データ・セット・メンバーの制約に合わせてファイル名を 8 文字 で切り捨てることを指定します。
–c (UNIX 間のみ)
コピー操作を完了するための十分な空きがディスケットにないとき、その交換をうながします。このオプションは、ディスケット・ドライブのないシステムには影響ありません。
規則: 親ディレクトリーが新しいターゲット・ディスケットに存在する必要があります。
–F format

コピーするときにファイルをバイナリー、テキスト、またはレコード・ファイル・フォーマットのどちらで扱うかを指定します。 テキスト・ファイルの場合は行の終わり区切り文字を指定します。さらに、ターゲットが UNIX ファイルであれば、ファイル・フォーマットを format に設定します。テキスト・ファイルの場合、UNIX から MVS へのコピーでは、行の終わり区切り文字は取り除かれます。 MVS から UNIX へのコピーでは、 行の終わり区切り文字が追加されます。 (コード・ページ IBM-1047 は、行の終わり区切り文字の有無を調べるために使用されます。) レコード・ファイル・フォーマットのファイルは、バイナリー・ファイルのように扱われます。

UNIX 間のコピーの際に -F が使用された場合、cp はターゲット・ファイルのフォーマットだけを設定し、行末区切り文字を置換しません。

format の設定が失敗した場合は警告が表示されますが、cp は、 コピーするよう指定された残りのファイルのコピーを続けます。

–F は、–B–X–p、 および –T と互いに排他的です。–F と共にこれらのオプション の 1 つを指定すると、エラーになります。–F を 2 回以上指定すると、最後に指定された –F が使 用されます。

format には、以下を指定できます。
not
指定されていません
bin
バイナリー・データ
rec
レコード。(ファイル・データは、接頭部の付いたレコードから成ります。レコードの接頭部には、後に続くレコードの長さが含まれます。シェル・コマンドの観点からは、このフォーマットのファイルはバイナリー・ファイルのように扱われます。)
あるいは、以下のテキスト・データ区切り文字。
nl
改行文字
cr
キャリッジ・リターン
lf
改行 (LF)
crlf
キャリッジ・リターン改行
lfcr
改行キャリッジ・リターン
crnl
キャリッジ・リターン改行
–f
開くことができない UNIX 宛先ファイルの除去と置換を試みます。
-H
コマンド行でソース・オペランドとして指定されたシンボリック・リンクに従います。 ツリー横断中に検出されるシンボリック・リンクには従いません。これは、-R または -r オプションが指定され、-H-L、または -P オプションのいずれも指定されない場合のデフォルトの動作です。
制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。
–i
UNIX ターゲットにコピーするとき、–i は、ファ イルが読み取り専用かどうかにかかわらず、既存のファイルを上書きしたい かどうかを尋ねます。
-L
コマンド行でソース・オペランドとして指定されたシンボリック・リンクおよびツリー横断中に検出されたシンボリック・リンクに従います。

制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。

–M
UNIX ファイルと MVS データ・セット・メンバーの間でコピーすると きに、ファイル名の特定の文字を変換するように指定します。文字は次のように変換されます。
  • UNIX での _ (下線) は、MVS データ・セット・メンバーでは @ に変換されます。また 、その逆も同様です。
  • . UNIX の . (ピリオド) は、 MVS データ・セット・メンバーでは # に変換されます。また、その逆も同様です。
  • UNIX の – (ダッシュ) は、 MVS データ・セット・メンバーの $ に変換されます。 また、その逆も同様です。
–m (UNIX 間のみ)
各宛先ファイルの変更時刻およびアクセス時刻を、対応するソース・ファイルのものに設定します。 通常は、cp は宛先ファイルの変更時刻を現在の時刻に設定します。
–O u | c=codeset
ソースおよびターゲット・ファイルに関する自動変換を可能にします。
–O u
ターゲットが存在していて、空でもすでにタグ付きでもない場合、cp は ターゲットが自動変換の候補になるためにターゲットのタグを変更しません。

新規のターゲットと既存のタグ付けされていない空ファイルに対しては、このオプションは有効ではなく、cp はデフォルトと同様に機能します。 デフォルトの動作については、cp での自動変換とファイル・タグの動作を参照してください。

cp を使用して UNIX ファイルから MVS データ・セットにコピーする場合、ソースがタグ付きテキスト・ファイルであれば、そのファイルは自動変換の候補となります。

MVS からまたは MVS への実行可能ファイルのコピーの場合、ソースとターゲットの両方に対して自動変換が使用不可になります。

–O c=codeset
cp にこのオプションを指定したときの動作については、cp での自動変換とファイル・タグの動作を参照してください。

codeset は、システムに認識されているコード・セット名かコード化数字セット ID (CCSID) のいずれかです。コード・セット名が存在する場合、その名前に関連付けられている数値 CCSID が使用されます。コマンド iconv -l は、既存の CCSID とそれらに対応するコード・セット名をリストすることに留意してください。

cp はタグをテキストまたはコード・セットに設定できない場合、テキスト・ファイルの破壊を防止するために失敗します。

重要: 自動変換が 正しく設定されていないか、またはソースが正しくタグ付けされていない場合、ターゲットは そのファイルの内容に一致しないタグのコード・セットで終わる可能性があります。
-P
_UNIX03 が YES である場合、コマンド行でソース・オペランドとして指定されたシンボリック・リンクにも、ツリー横断中に検出されたシンボリック・リンクにも従いません。

制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。

–P params
_UNIX03 が設定されていないか、YES でない場合、-P オプションは、新規順次データ・セット (存在しない場合) を作成するために必要なパラメーターの指定として扱われます。RECFM、LRECL、BLKSIZE、および SPACE を、CRTL fopen() 関数が 使用する形式で指定することができます。
SPACE=(units,(primary,secondary) ここで、units には、次の値を使用できます。
  • BLKSIZE を示す任意の正の整数
  • CYL (大文字小文字混合)
  • TRK (大文字小文字混合)

    例えば、次のとおりです。

    SPACE=(500,(100,500)) units, primary, secondary
    SPACE=(500,100) units and primary only

これらのパラメーターの指定方法については、 「z/OS XL C/C++ プログラミング・ガイド」を参照してください。

注: CRTL fopen() 引数: LRECL は、固定長 レコードの場合は長さを、可変長レコードの場合は最大長を、バイト単位で 指定します。BLKSIZE は、レコードの物理ブロックの最大長をバイト単位で指定します。 RECFM は、データ・セットのレコード・フォーマットを指し、SPACE は、MVS データ・ セットのスペース属性を示します。
–p (UNIX 間のみ)
変更およびアクセス時刻を保存します (–m オプションが行う のと同じです)。それに加えて、権限があれば、ファイル・モード、ファイル・フォーマット、所有者、およびグループ所有者を保存します。さらに、拡張属性も保存します。可能な場合は、ファイルとディレクトリーの ACL も保存します。ファイル・システムが ACL をサポートしない場合には、ACL は保存されません。

–p–F は互いに排他的です。両方を指定すると、エラ ー・メッセージが表示されます。

–R (UNIX 間のみ)
ソース・ツリーの「クローン」を作成します。cp は、source… に よって指定されたすべてのファイルおよびサブディレクトリーを directory にコピーします。スペシャル・ファイル (FIFO、文字特殊) の複写には細心の配慮をします。cp は、コマンド行でソース・オペランドとして指定されたシンボリック・リンクのみに従います。
–r (UNIX 間のみ)
ソース・ツリーの「クローン」を作成しますが、スペシャル・ファイル (FIFO、文字特殊) については考慮しません。したがって、cp は スペシャル・ファイルをコピーするのではなく、デバイスから読み取ろうと試みます。これは、より望ましい –R に似ていますが、あまり有用ではありません。
–S d=suffix|a=suffix
  • d=suffix

    指定された接尾部をファイルから除去します。

  • a=suffix

    指定された接尾部をファイルに追加します。

–S は、–M および –C に優先します。 また、–A オプションをオフにします (–S が、指定された最後 のオプションである場合)。
–T
コピーするデータにテキスト・データが含まれていることを指定し ます。テキスト・データの取り扱いについては、使用上の注意を参照してください。このオプションは、IBM–1047 行の終わり区切り文字を探すもので、–F–X、および –B と互いに排他的です。つまり、これらのオプションを複数指定すると、エラーになります。
注: –T は、UNIX ファイル・システム間でのコピーのときは無 視されます。
–U
MVS データ・セット・メンバーから UNIX ファイルへコピーするとき 、ファイル名を大文字のまま保持します。デフォルトでは、ファイル名は小文字にされます。
–v
詳細
-W seqparms=params
順次データ・セット (存在しない場合) を作成するために必要な パラメーターを指定します。RECFM、LRECL、BLKSIZE、および SPACE を、CRTL fopen() 関数が使用する形式で指定することができます。
SPACE=(units,(primary,secondary) ここで、units には、次の値を使用できます。
  • BLKSIZE を示す任意の正の整数
  • CYL (大文字小文字混合)
  • TRK (大文字小文字混合)
    例えば、以下のとおりです。
    SPACE=(500,(100,500)) units, primary, secondary
    SPACE=(500,100) units and primary only

これらのパラメーターの指定方法については、 「z/OS XL C/C++ プログラミング・ガイド」を参照してください。

注: CRTL fopen() 引数: LRECL は、固定長 レコードの場合は長さを、可変長レコードの場合は最大長を、バイト単位で 指定します。BLKSIZE は、レコードの物理ブロックの最大長をバイト単位で指定します。 RECFM は、データ・セットのレコード・フォーマットを指し、SPACE は、MVS データ・ セットのスペース属性を示します。

このオプションは、_UNIX03 が設定されていないか、YES でない場合の -P params と同じです。複数の -P params および -W を指定すると、コマンドで最後に示される値が指定されます。

–X
コピーするデータが実行可能であることを指定します。–F–T、 または –B オプションと一緒に使用することはできません。
-Z
ターゲット上での ACL 設定時に、エラー・メッセージを表示しないことを 指定します。戻りコードはゼロとなります。デフォルトの動作を使用してファイル・タグが設定された場合、失敗は抑止されます。デフォルトの動作については、cp での自動変換とファイル・タグの動作を参照してください。

–F|B|T または X のいずれも指定されないと、cp はまず、示された MVS データ・セットのフォーマットを検 査してから、ファイルのタイプを判別しようと試みます。

cp 上の –p オプションはファイル・タグに影響しません。

cp での自動変換とファイル・タグの動作

次の表は、cp コマンドで -O オプションが指定されているかどうかに応じて異なるソースおよびターゲットのシナリオにおけるファイル・タグと自動変換の動作を示しています。
表 1. デフォルトを使用した (-0 オプションを指定しない) ファイルからファイルへのコピー
S ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)…    
ファイル・タグ ソース・ファイルと同じようにターゲット・ファイルがタグ付けされます。 既存ターゲットのタグは変更されません。

ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。

ターゲットのタグは変更されません。

(ソース・ファイルまたはターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのファイルは自動変換の候補になります。)

ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。
自動変換 ソースとターゲット・ファイルで使用不可 ソースとターゲット・ファイルで許可
表 2. cp での自動変換とファイル・タグの動作: ファイルからファイルへのコピー
  デフォルト (-O オプションを指定しない場合) -O u オプションを指定する場合 -O c=codeset オプションを指定する場合
ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)…
ファイル・タグ ソース・ファイルと同じようにターゲット・ファイルがタグ付けされます。 既存ターゲットのタグは変更されません。

ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。

ターゲットのタグは変更されません。

(ソース・ファイルまたはターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのファイルは自動変換の候補になります。)

ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。
自動変換 ソースとターゲット・ファイルで使用不可 ソースとターゲット・ファイルで許可
表 3. cp での自動変換とファイル・タグの動作: MVS データ・セットからファイルへのコピー
  デフォルト (-O オプションを指定しない場合) -O u オプションを指定する場合 -O c=codeset オプションを指定する場合
ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)…
ソースがテキストの場合
ファイル・タグ ターゲットには UNTAG が設定されます 既存ターゲットのタグは変更されません。

ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。

ターゲットのタグは変更されません ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。
自動変換 ターゲット・ファイルで使用不可 ターゲット・ファイルで許可

(ターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのターゲット・ファイルは自動変換の候補になります。)

ソースがバイナリーまたは実行可能ファイルの場合
ファイル・タグ ターゲットには UNTAG が設定されます ターゲットのタグは変更されません ターゲットの TXTFLAG が BINARY に設定され、そのコード・セットは codeset に設定されます。
自動変換 ターゲット・ファイルで使用不可
表 4. cp での自動変換とファイル・タグの動作: ファイルから MVS データ・セットへのコピー
  デフォルト (-O オプションを指定しない場合) -O u オプションを指定する場合 -O c=codeset オプションを指定する場合
ソースがテキストまたはバイナリーの場合
ファイル・タグ ターゲット・データ・セットには適用されません
自動変換 ソース・ファイルで使用不可 ソース・ファイルで許可

(ソース・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのソース・ファイルは自動変換の候補になります。)

ソース・ファイルで使用不可
ソースが実行可能ファイルの場合
ファイル・タグ ターゲット・データ・セットには適用されません
自動変換 ソース・ファイルで使用不可

制約と要件

一般的には、以下のとおりです。

  1. MVS データ・セット名を指定するには、名前の前にダブルスラッシュ (//) を付けます。例えば、完全修飾データ・セット名 'turbo.gammalib' および 'turbo.gammalib(pgm1)' を指定するには、次のように入力します。
    "//'turbo.gammalib'"
    "//'turbo.gammalib(pgm1)'"
    完全修飾でないデータ・セット名にも、同じ要件が適用されます。
    //turbo
  2. PDS (区分データ・セット) または PDSE (拡張区分データ・セッ ト) の場合、シェルによって構文解析されないようにするためには、名前を引用符 で囲むか、または最小限、括弧をエスケープする必要があります。例えば、'turbo(pgm1)' を指定するには、次のように引用符で囲みます。
    "//turbo(pgm1)"  
    または、次のように括弧をエスケープすることができます。
    //turbo¥(pgm1¥)

    上記に示したように、完全修飾名は単一引用符で囲む必要があります (TSO 内で行われるのと同じです)。単一引用符がシェルによって解釈されないようにするためには、単一引用符 をエスケープするか、または名前を正規の引用符内に入れなければなりません。'turbo.gammalib' の例を参照してください。

  3. UNIX ファイルをソースとして指定したときに、MVS データ・セット (タ ーゲット) が存在しないと、順次データ・セットが作成されます。区分データ・セットが存在する場合は、UNIX ファイルは区分データ・セット・メンバーにコピーされます。
  4. ソースが MVS データ・セットで、ターゲットが UNIX ディレクトリーの 場合は、その UNIX ディレクトリーが存在していなければなりません。
  5. ターゲットが区分データ・セットである場合は、ソースとして、UNIX デ ィレクトリー、区分データ・セット、または順次データ・セットを使用する ことはできません。
  6. 区分データ・セットからすべてのメンバーをコピーするには、ソー スとしてその区分データ・セットを指定し、ターゲットとして UNIX ディレ クトリーを指定することができます。
MVS データ・セット名に関する制限: MVS データ・セットの命名にはいくつかの制限があります。
  • データ・セット名には英大文字 (A から Z) だけを含めることができま す。小文字は、MVS データ・セットへのコピー中に大文字に変換されます。
  • データ・セット名には、数字 0 から 9 と特殊文字 @、#、および $ を含める ことができます。
  • データ・セット名を数字で始めることはできません。
  • データ・セット・メンバー名が 8 文字を超えてはなりません。ファイル名が 8 文字より長いか、または MVS データ・セット名に認められていない文字を使用している場合、ファイルはコピーされません。–C オプションを使用すれば、名前 を 8 文字に切り捨てることができます。
制限: UNIX から MVS データ・セットへ: 制限は次のとおりです。
  1. 未定義レコード・フォーマットの順次 MVS データ・セットを指定すると、ファ イルはバイナリーとしてコピーされます。
  2. 未定義レコード・フォーマットの PDSE を指定した場合、ファイルがどのフォーマットでコピーされるかは、正常にコピーされた最初のファイルによって決まり ます。PDSE ではフォーマットの混合は許可されないことに注意してください。正常にコピーされた最初のファイルが実行可能であると、PDSE はプログラム・オブジェクトだけを持つことになり、他のファイルはすべて 失敗します。これに反して、最初のファイルがデータであれば、すべてのファイルはバイ ナリーとしてコピーされます。
  3. 未定義レコード・フォーマットの PDS を指定した場合、UNIX 実行可能 は PDS ロード・モジュールとして保管されます。他のすべてのファイルはバイナリーとしてコピーされます。
  4. 可変長または固定長レコードのいずれかの MVS データ・セットを指定し たときに、ファイル・フォーマットを設定していなければ、テキスト・ファイルはテキ ストとして、バイナリーはバイナリーとして、実行可能はバイナリーとして 、それぞれコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
  5. ファイル・フォーマットを設定した場合は、設定値を使用して、データが バイナリー、テキスト、またはレコード・ファイル・フォーマットかが判別されます。
制限: MVS データ・セットから UNIX へ: 制限は次のとおりです。
  1. UNIX ファイルが存在しない場合は、コピーするデータがバイナリーまたはテキストであるか関係なく、次の 666 モード値を使用して UNIX ファイルが作成されます。
    666 mode value:  owner(rw-)  group(rw-)  other(rw-)
    コピーするデータが PDS または PDSE に常駐する不定形式レコード・フォーマットのシェル・スクリプトまたは実行可能ファイルである場合、次の 777 モード値を使用して UNIX ファイルが作成されます。
    777 mode value:  owner(rwx)  group(rwx)  other(rwx)
  2. UNIX ファイルが存在し、ファイル・フォーマットが設定されていると、cp はファイルをそのフォーマットでコピーします。その他の場合、次のようになります。
    • ロード・モジュール (PDS) は UNIX 実行可能モジュールとして保管され、プログラ ム・オブジェクト (PDSE) は、実行可能モジュールと同じであるのでコピーされます。
    • 未定義レコード・フォーマットのデータ・セット内のデータは、データがプログラム ・オブジェクトまたはロード・モジュールでなければ、バイナリーとしてコ ピーされます。
    • 固定長または可変長レコードのデータ・セット内で見つかったデータは 、テキストとしてコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
制限: MVS から MVS へ: 制限は次のとおりです。
  1. –A–C–f、 および –S オプションは無視されます。
  2. ターゲットとソースが未定義レコード・フォーマットである (どちらも順次データ ・セットでない) 場合、cp はデータをロード・モジュールとして コピーしようとします。失敗すると、cp はデータをバイナリーとしてコピーします。
  3. ターゲットとソースが未定義レコード・フォーマットであり、いずれか一方が順次デ ータ・セットであると、cp はデータをバイナリーとしてコピーし ます。
  4. ソースが固定長または可変長レコードであり、ターゲットが未定義レコード・フォーマットである場合、cp はデータをバイナリーとしてコピーしま す。
  5. ソースが未定義レコード・フォーマットであり、ターゲットが固定長または可変長レ コードである場合、cp はデータをバイナリーとしてコピーしま す。
  6. ソースとターゲットの両方が固定長または可変長レコードである場合は 、cp はデータをテキストとしてコピーします。
制限: 実行可能ファイルから PDS へのコピー : 制限は次のとおりです。
  1. PDS は、プログラム管理機能を組み込んだロード・モジュールを保管す ることができません。
  2. c89 は、デフォルトでは、最高レベルのプログラム管理を使用 してオブジェクトを作成します。
  3. ロード・モジュールを PDS にコピーする計画がある場合は、リンケージ ・エディターと互換性のある出力を作成するプリリンカーを使用することができます。 リンケージ・エディター生成の出力は PDS に保管することができます。

表 5 は、cp でオプションを正しく使用するための早見表です。

表 5. cp で許可されるオプション: ファイルからファイルへ、およびファイル (複数ファイル) からディレクトリーへ
ソース/ターゲット 許可されるオプション 無視されるオプション 失敗するオプション
UNIX ファイル/UNIX ファイル Ffip ABCMPSTUX  
UNIX ファイル/順次データ・セット BFiPT ACfMpSU X
UNIX ファイル/PDS または PDSE メンバー BFiTX ACfMPpSU  
順次データ・セット/UNIX ファイル BFfiTU ACMPpS X
順次データ・セット/順次データ・セット BFiPT ACfMpSU X
順次データ・セット/PDS または PDSE メンバー BFiT ACfMPpSU X
PDS または PDSE メンバー/UNIX ファイル BFfiTUX ACMPpS  
PDS または PDSE メンバー/順次データ・セット BFiPT ACfMpSU X
PDS または PDSE メンバー/PDS または PDSE メンバー BFiTX ACfMPpSU  
UNIX ファイル/UNIX ディレクトリー ACFipS BMPTUX  
PDSE または PDSE メンバー/UNIX ディレクトリー BFfiMSTUX ACMPp  
UNIX ファイル/区分データ・セット ABCFiMSTX fPpU  
PDS または PDSE メンバー/区分データ・セット BFiTX ACfMPpSU  
区分データ・セット/UNIX ディレクトリー ABCFfiMSTUX Pp  

次の表は、cp を使用して許可されるコピーの種類を示しています。

表 6. cp で許可されるコピー: ファイルからファイルへ
ソース ターゲット 許可
UNIX ファイル、順次データ・セット、 または区分データ・セット・メンバー UNIX ファイル、順次データ・セット、 または区分データ・セット・メンバー Yes
UNIX ディレクトリー UNIX ディレクトリー No (cp–R または –r と共に使用する場合 を除く)
区分データ・セット UNIX ディレクトリー (dir) 注: データ・セットの各メンバーの結果は dir に移動されます。 Yes
UNIX ディレクトリー 区分データ・セット No
区分データ・セット 区分データ・セット No
UNIX ファイルまたは区分データ・セット・メンバー UNIX ディレクトリー (存在する必要がある) または区分データ・セット Yes
区分データ・セット・メンバー 区分データ・セット Yes
表 7. cp で許可されるコピー: ファイル (複数ファイル) からディレクトリーへ
ソース ターゲット 許可
UNIX ファイルまたは区分データ・セット・メンバーの任意の組み合わせ UNIX ディレクトリーまたは区分データ・セット Yes
UNIX ディレクトリーまたは順次データ・セットの任意の組み合わせ 区分データ・セットまたは UNIX ディレクトリー No
区分データ・セット UNIX ディレクトリー Yes
区分データ・セット 区分データ・セット No

使用上の注意

UNIX から MVS へ:
  1. UNIX から区分データ・セットにコピーするためには、cp を行 う前に、そのデータ・セットを割り当てておかなければなりません。
  2. MVS データ・セットが存在しない場合、cp は、可変長レコード・フォーマットの新しい順次データ・セットを割り当てます。
  3. テキスト・ファイルの場合、すべての <改行> 文字はコピー中に取り 除かれます。<改行> 文字で終わるファイルの中の各行は、MVS データ・セットのレコ ードにコピーされます。ソース・ファイルに対してテキスト・ファイル・フォーマットを指定したか、またはテ キスト・ファイル・フォーマットがすでに存在する場合は、<改行> ではなく、その ファイル・フォーマットが行の終わり区切り文字として使用されます。cp はデータ内で IBM-1047 という行の終わり区切り文字を探すことに注意してください。

    テキスト・ファイルを、未定義レコード・フォーマットの MVS データ・セットにコピーす ることはできません。

    • 固定長レコード・フォーマットの MVS データ・セットの場合、レコード・サイズを 超えるいずれかの行がコピーされると、cp は失敗し、エラー・メ ッセージとエラー・コードを表示します。行がレコード・サイズより短い場合、レコードにはブランクが埋め込まれます。
    • 可変長レコード・フォーマットの MVS データ・セットの場合は、最大レコード・サ イズを超える行がコピーされると、cp は失敗し、エラー・メッセ ージとエラー・コードを表示します。レコード長は、その行の長さに設定されます。
  4. バイナリー・ファイルでは、コピーされたデータはすべて保存されます。
    • 固定長レコード・フォーマットの MVS データ・セットの場合、データはレコード長 に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードにはブ ランクが埋め込まれます。
    • 可変長レコード・フォーマットの MVS データ・セットの場合、データは最大レコー ド長に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
    • 未定義レコード・フォーマットの MVS データ・セットの場合、データはブロック・サ イズに等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
  5. ロード・モジュールの場合、指定する区分データ・セットは未定義レコード・フォーマットでなければなりません。さもないと、実行可能モジュールはコピーされません。
  6. 複数のファイル名が同じ場合、ファイルは以降のコピーごとに上書きされます。
  7. UNIX ファイル名に MVS データ・セットでは許可されない文字が含まれ ていると、そのファイルはコピーされません。UNIX ファイル名が 8 文字を超えている場合、そのファイルを MVS データ・ セット・メンバーにコピーすることはできません。(ファイル名の変換については、 –ACMS オプションを参照してください)
  8. ファイルを、スパン・レコードを持つデータ・セットにコピーすること はできません。
  9. PDSE に、プログラム・オブジェクトとデータ・メンバーを混合させては なりません。PDS では混合は許可されますが、お勧めできません。
  10. 外部リンクおよび FIFO などの特殊ファイルは、 MVS データ・セットにコピーされません。 ただし、文字特殊ファイルは MVS データ・セットにコピーできます。
  11. ファイルがシンボリック・リンクの場合、cp は、リンクその ものではなく、解決されたファイルをコピーします。
  12. UNIX ファイル属性は、MVS にコピーすると失われます。ファイル属性を保持したい場合は、pax ユーティリティーを使用 する必要があります。
MVS から UNIX へ:
  1. ターゲット UNIX ファイルが存在する場合、既存のデータは新 しいデータで上書きされます。ファイルのモードは変更されません (S_ISUID および S_ISGID ビットがオフになっている場合を除く)。
  2. 指定された UNIX ファイルが存在しない場合は、バイナリーまたはテキストであれば、666 モード値を使用して作成されます (これは umask に左右されます)。コピーするデータがシェル・スクリプトまたは実行可能ファイルである場合は、777 モード値を使用して UNIX ファイルが作成されます (umask に左右されます)。
  3. 可変長レコード・フォーマット RECFM(VB) または未定義レコード・フォーマット RECFM(U) の MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクが保存されます。固定長レコード・フォーマットの MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクは保存されません。
  4. MVS データ・セットを z/OS® UNIX ファイル・システムのテキスト・ファイルにコピーすると、 <改行> 文字が各レコードの終わりに追加されます。レコードに末尾ブランクがある場合、<newline> 文字は末尾ブランクの後に追加されます。ファイル・フォーマット・オプションが指定された場合、またはターゲット・ファイルの ファイル・フォーマットが設定されている場合には、<改行> では なく、そのファイル・フォーマットが行の終わり区切り文字として使用されます。
  5. MVS データ・セットを UNIX バイナリー・ファイルにコピーした場合、<改行> 文字はレコードに追加されません。
  6. cp を使用して、スパン・レコード長を持つデータ・セット をコピーすることはできません。
  7. XL C/C++ ランタイムでの制限のために、同じ名前と大/小文字を持つ MVS 順次データ・セットにファイル・システムからファイルをコピーする場合は、ファイル・システム内のファイルの前に「./」を付ける必要があります。例えば、以下のとおりです。
    cp ./SMPL.DATA   "//'SMPL.DATA'"

  1. _UNIX03 が設定されていないか、YES でない場合、存在しない順次ターゲットのために –P params を指定するには、次のように入力します。
    cp -P "RECFM=U,space=(500,100)" file "//'turbo.gammalib'"
    上記の cp コマンドは、以下と同等です。
     cp -W "seqparms='RECFM=U,space=(500,100)'" file "//'turbo.gammalib'"
  2. ファイル f1 を完全修飾順次データ・セット 'turbo.gammalib' にコピーし、それをバイナリーとして扱うには、次 のように入力します。
    cp -F bin f1 "//'turbo.gammalib'"
  3. 完全修飾 PDS 'turbo.gammalib' のすべてのメンバーを既存 の UNIX ディレクトリー dir にコピーするには、次のように入 力します。
    cp "//'turbo.gammalib'" dir
  4. UNIX ディレクトリー dir のすべてのファイルを既存の PDS 'turbo.gammalib' にコピーする前に .c 接尾部を取り除く には、次のように入力します。
    cp -S d=.c dir/* "//'turbo.gammalib'"

ローカライズ

cp は、以下のローカライズ環境変数を使用します。
  • LANG
  • LC_ALL
  • LC_COLLATE
  • LC_CTYPE
  • LC_MESSAGES
  • LC_SYNTAX
  • NLSPATH

TZ 環境変数のフォーマットに、TZ 環境変数を使用してローカル・タイム・ゾーンを設定する方法が説明されています。

環境変数

cp は、MVS データ・セットにレコードをコピーしたり、MVS データ・セットからレコードをコピーする際に、以下の環境変数を使用します。
_EDC_ZERO_RECLEN
cp を呼び出す前にこれが Y に設定されていると、空のレコード (長さゼロ) は単一改行文字として扱われ、無視されません。また、単一改行文字は空のレコ ードとしてファイルに書き込まれ、単一ブランクは "  ¥n" で表されます。レコードをコピーするときにこの環境変数を設定しない場合、 ストリング "  ¥n" はストリング "¥n" と同様にコピーされます。すなわち、 両方とも "¥n"として読み取りと書き込みが行われます。ここで "¥n" は、z/OS XL C/C++ が、 単一ブランクが入っているレコードをファイルに書き込むことを意味します (z/OS XL C/C++ のデフォルトの動作)。出力内の他のブランクは すべてブランクとして読み戻され、空のレコードは無視されます。
cp は、以下の環境変数も使用します。
_UNIX03
このコマンドでの _UNIX03 の効果について詳しくは、UNIX03 用に変更されたシェル・コマンドを参照してください。

終了値

0
正常終了
1
以下のいずれかによる失敗。
  • 引数の末尾にスラッシュ (/) があるが、ディレクトリーではなかった
  • ファイルが見つからない
  • 入力ファイルを読み取るために開くことができない
  • 出力ファイルを作成または開くことができない
  • 入力ファイルで読み取りエラーが発生した
  • 出力ファイルで書き込みエラーが発生した
  • 入力ファイルと出力ファイルが同一である
  • –r または –R を使用しているときに、 リカバリー不能エラーが発生した。以下のリカバリー不能な –r または –R エラーの可能性がある。
    • ファイルにアクセスできない
    • ターゲット・ファイルの許可を変更できない
    • ディレクトリーを読み取れない
    • ディレクトリーを作成できない
    • ターゲットがディレクトリーではない
    • ソースおよび宛先ディレクトリーが同一である
2
以下のいずれかによる失敗。
  • コマンド行のオプションが正しくない
  • コマンド行の引数が少なすぎる
  • ターゲットはディレクトリーでなければならないが、そうでない
  • ターゲット・デバイスにスペースがない
  • コピーするデータを保持するためのメモリーが不足
  • ターゲット・ファイルを保持するためのディレクトリーを作成できない

メッセージ

以下の エラー・メッセージが出される可能性があります。
cannot allocate target string
cp には、ターゲット・ファイルの名前を保持するための スペースがありません。cp にもっとスペースを与えるために、メモリーをいくらか解放してください。
name is a directory (not copied)
–r または –R が指定されていませんが、コピーしようとした名前の中にディレクトリーの名前があります。
target name?
–i オプションを指定してファイルをコピーしようと していますが、ターゲット名のファイルはすでに存在しています。–f を指定した場合は、y と入力し、<Enter> を押すことによって、既存のファイルに上書きすることができます。既存のファイルに上書きしたくない場合は、n と入力し 、<Enter> を押します。–f を指定していなくて、ファイルが読み取り専用の場合は、それに上書きする機会は与えられません。
source name and target name are identical
ソースとターゲットが実際には同一のファイルです (例えば、リンクのために)。この場合は、cp は何もしません。
unreadable directory name
cp は指定されたディレクトリーを読み取ることができません。例えば、適切な許可を持っていないためです。

移植性

POSIX.2X/Open 移植性ガイドUNIX システム。

–f および –m オプションは、POSIX 標準の拡張です。

関連情報

catcpiolnmvrm