形式
変数 _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 でタグ付けされている場合、そのソース・ファイルは自動変換の候補になります。)
|
ソース・ファイルで使用不可 |
ソースが実行可能ファイルの場合 |
ファイル・タグ |
ターゲット・データ・セットには適用されません |
自動変換 |
ソース・ファイルで使用不可 |
制約と要件
一般的には、以下のとおりです。
- MVS データ・セット名を指定するには、名前の前にダブルスラッシュ
(//) を付けます。例えば、完全修飾データ・セット名 'turbo.gammalib' および
'turbo.gammalib(pgm1)' を指定するには、次のように入力します。
"//'turbo.gammalib'"
"//'turbo.gammalib(pgm1)'"
完全修飾でないデータ・セット名にも、同じ要件が適用されます。//turbo
- PDS (区分データ・セット) または PDSE (拡張区分データ・セッ
ト) の場合、シェルによって構文解析されないようにするためには、名前を引用符
で囲むか、または最小限、括弧をエスケープする必要があります。例えば、'turbo(pgm1)' を指定するには、次のように引用符で囲みます。
"//turbo(pgm1)"
または、次のように括弧をエスケープすることができます。//turbo¥(pgm1¥)
上記に示したように、完全修飾名は単一引用符で囲む必要があります (TSO 内で行われるのと同じです)。単一引用符がシェルによって解釈されないようにするためには、単一引用符
をエスケープするか、または名前を正規の引用符内に入れなければなりません。'turbo.gammalib' の例を参照してください。
- UNIX ファイルをソースとして指定したときに、MVS データ・セット (タ
ーゲット) が存在しないと、順次データ・セットが作成されます。区分データ・セットが存在する場合は、UNIX ファイルは区分データ・セット・メンバーにコピーされます。
- ソースが MVS データ・セットで、ターゲットが UNIX ディレクトリーの
場合は、その UNIX ディレクトリーが存在していなければなりません。
- ターゲットが区分データ・セットである場合は、ソースとして、UNIX デ
ィレクトリー、区分データ・セット、または順次データ・セットを使用する
ことはできません。
- 区分データ・セットからすべてのメンバーをコピーするには、ソー
スとしてその区分データ・セットを指定し、ターゲットとして UNIX ディレ
クトリーを指定することができます。
MVS データ・セット名に関する制限: MVS データ・セットの命名にはいくつかの制限があります。
- データ・セット名には英大文字 (A から Z) だけを含めることができま
す。小文字は、MVS データ・セットへのコピー中に大文字に変換されます。
- データ・セット名には、数字 0 から 9 と特殊文字 @、#、および $ を含める
ことができます。
- データ・セット名を数字で始めることはできません。
- データ・セット・メンバー名が 8 文字を超えてはなりません。ファイル名が 8 文字より長いか、または MVS データ・セット名に認められていない文字を使用している場合、ファイルはコピーされません。–C オプションを使用すれば、名前
を 8 文字に切り捨てることができます。
制限: UNIX から MVS データ・セットへ: 制限は次のとおりです。
- 未定義レコード・フォーマットの順次 MVS データ・セットを指定すると、ファ
イルはバイナリーとしてコピーされます。
- 未定義レコード・フォーマットの PDSE を指定した場合、ファイルがどのフォーマットでコピーされるかは、正常にコピーされた最初のファイルによって決まり
ます。PDSE ではフォーマットの混合は許可されないことに注意してください。正常にコピーされた最初のファイルが実行可能であると、PDSE
はプログラム・オブジェクトだけを持つことになり、他のファイルはすべて
失敗します。これに反して、最初のファイルがデータであれば、すべてのファイルはバイ
ナリーとしてコピーされます。
- 未定義レコード・フォーマットの PDS を指定した場合、UNIX 実行可能
は PDS ロード・モジュールとして保管されます。他のすべてのファイルはバイナリーとしてコピーされます。
- 可変長または固定長レコードのいずれかの MVS データ・セットを指定し
たときに、ファイル・フォーマットを設定していなければ、テキスト・ファイルはテキ
ストとして、バイナリーはバイナリーとして、実行可能はバイナリーとして
、それぞれコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
- ファイル・フォーマットを設定した場合は、設定値を使用して、データが
バイナリー、テキスト、またはレコード・ファイル・フォーマットかが判別されます。
制限: MVS データ・セットから UNIX へ: 制限は次のとおりです。
- 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)
- UNIX ファイルが存在し、ファイル・フォーマットが設定されていると、cp はファイルをそのフォーマットでコピーします。その他の場合、次のようになります。
- ロード・モジュール (PDS) は UNIX 実行可能モジュールとして保管され、プログラ
ム・オブジェクト (PDSE) は、実行可能モジュールと同じであるのでコピーされます。
- 未定義レコード・フォーマットのデータ・セット内のデータは、データがプログラム
・オブジェクトまたはロード・モジュールでなければ、バイナリーとしてコ
ピーされます。
- 固定長または可変長レコードのデータ・セット内で見つかったデータは
、テキストとしてコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
制限: MVS から MVS へ: 制限は次のとおりです。
- –A、–C、–f、
および –S オプションは無視されます。
- ターゲットとソースが未定義レコード・フォーマットである (どちらも順次データ
・セットでない) 場合、cp はデータをロード・モジュールとして
コピーしようとします。失敗すると、cp はデータをバイナリーとしてコピーします。
- ターゲットとソースが未定義レコード・フォーマットであり、いずれか一方が順次デ
ータ・セットであると、cp はデータをバイナリーとしてコピーし
ます。
- ソースが固定長または可変長レコードであり、ターゲットが未定義レコード・フォーマットである場合、cp はデータをバイナリーとしてコピーしま
す。
- ソースが未定義レコード・フォーマットであり、ターゲットが固定長または可変長レ
コードである場合、cp はデータをバイナリーとしてコピーしま
す。
- ソースとターゲットの両方が固定長または可変長レコードである場合は
、cp はデータをテキストとしてコピーします。
制限: 実行可能ファイルから PDS へのコピー : 制限は次のとおりです。
- PDS は、プログラム管理機能を組み込んだロード・モジュールを保管す
ることができません。
- c89 は、デフォルトでは、最高レベルのプログラム管理を使用
してオブジェクトを作成します。
- ロード・モジュールを 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 へ: - UNIX から区分データ・セットにコピーするためには、cp を行
う前に、そのデータ・セットを割り当てておかなければなりません。
- MVS データ・セットが存在しない場合、cp は、可変長レコード・フォーマットの新しい順次データ・セットを割り当てます。
- テキスト・ファイルの場合、すべての <改行> 文字はコピー中に取り
除かれます。<改行> 文字で終わるファイルの中の各行は、MVS データ・セットのレコ
ードにコピーされます。ソース・ファイルに対してテキスト・ファイル・フォーマットを指定したか、またはテ
キスト・ファイル・フォーマットがすでに存在する場合は、<改行> ではなく、その
ファイル・フォーマットが行の終わり区切り文字として使用されます。cp はデータ内で IBM-1047 という行の終わり区切り文字を探すことに注意してください。
テキスト・ファイルを、未定義レコード・フォーマットの MVS データ・セットにコピーす
ることはできません。
- 固定長レコード・フォーマットの MVS データ・セットの場合、レコード・サイズを
超えるいずれかの行がコピーされると、cp は失敗し、エラー・メ
ッセージとエラー・コードを表示します。行がレコード・サイズより短い場合、レコードにはブランクが埋め込まれます。
- 可変長レコード・フォーマットの MVS データ・セットの場合は、最大レコード・サ
イズを超える行がコピーされると、cp は失敗し、エラー・メッセ
ージとエラー・コードを表示します。レコード長は、その行の長さに設定されます。
- バイナリー・ファイルでは、コピーされたデータはすべて保存されます。
- 固定長レコード・フォーマットの MVS データ・セットの場合、データはレコード長
に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードにはブ
ランクが埋め込まれます。
- 可変長レコード・フォーマットの MVS データ・セットの場合、データは最大レコー
ド長に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
- 未定義レコード・フォーマットの MVS データ・セットの場合、データはブロック・サ
イズに等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
- ロード・モジュールの場合、指定する区分データ・セットは未定義レコード・フォーマットでなければなりません。さもないと、実行可能モジュールはコピーされません。
- 複数のファイル名が同じ場合、ファイルは以降のコピーごとに上書きされます。
- UNIX ファイル名に MVS データ・セットでは許可されない文字が含まれ
ていると、そのファイルはコピーされません。UNIX ファイル名が 8 文字を超えている場合、そのファイルを MVS データ・
セット・メンバーにコピーすることはできません。(ファイル名の変換については、
–ACMS オプションを参照してください)
- ファイルを、スパン・レコードを持つデータ・セットにコピーすること
はできません。
- PDSE に、プログラム・オブジェクトとデータ・メンバーを混合させては
なりません。PDS では混合は許可されますが、お勧めできません。
- 外部リンクおよび FIFO などの特殊ファイルは、 MVS データ・セットにコピーされません。
ただし、文字特殊ファイルは MVS データ・セットにコピーできます。
- ファイルがシンボリック・リンクの場合、cp は、リンクその
ものではなく、解決されたファイルをコピーします。
- UNIX ファイル属性は、MVS にコピーすると失われます。ファイル属性を保持したい場合は、pax ユーティリティーを使用
する必要があります。
MVS から UNIX へ: - ターゲット UNIX ファイルが存在する場合、既存のデータは新
しいデータで上書きされます。ファイルのモードは変更されません (S_ISUID および S_ISGID ビットがオフになっている場合を除く)。
- 指定された UNIX ファイルが存在しない場合は、バイナリーまたはテキストであれば、666 モード値を使用して作成されます (これは umask に左右されます)。コピーするデータがシェル・スクリプトまたは実行可能ファイルである場合は、777 モード値を使用して UNIX ファイルが作成されます (umask に左右されます)。
- 可変長レコード・フォーマット RECFM(VB) または未定義レコード・フォーマット RECFM(U) の MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクが保存されます。固定長レコード・フォーマットの MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクは保存されません。
- MVS データ・セットを z/OS® UNIX ファイル・システムのテキスト・ファイルにコピーすると、
<改行> 文字が各レコードの終わりに追加されます。レコードに末尾ブランクがある場合、<newline> 文字は末尾ブランクの後に追加されます。ファイル・フォーマット・オプションが指定された場合、またはターゲット・ファイルの
ファイル・フォーマットが設定されている場合には、<改行> では
なく、そのファイル・フォーマットが行の終わり区切り文字として使用されます。
- MVS データ・セットを UNIX バイナリー・ファイルにコピーした場合、<改行> 文字はレコードに追加されません。
- cp を使用して、スパン・レコード長を持つデータ・セット
をコピーすることはできません。
- XL C/C++ ランタイムでの制限のために、同じ名前と大/小文字を持つ MVS 順次データ・セットにファイル・システムからファイルをコピーする場合は、ファイル・システム内のファイルの前に「./」を付ける必要があります。例えば、以下のとおりです。
cp ./SMPL.DATA "//'SMPL.DATA'"
例
- _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'"
- ファイル f1 を完全修飾順次データ・セット 'turbo.gammalib' にコピーし、それをバイナリーとして扱うには、次
のように入力します。
cp -F bin f1 "//'turbo.gammalib'"
- 完全修飾 PDS 'turbo.gammalib' のすべてのメンバーを既存
の UNIX ディレクトリー dir にコピーするには、次のように入
力します。
cp "//'turbo.gammalib'" dir
- 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++ のデフォルトの動作)。出力内の他のブランクは
すべてブランクとして読み戻され、空のレコードは無視されます。
終了値
- 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.2、X/Open 移植性ガイド、UNIX システム。
–f および –m オプションは、POSIX 標準の拡張です。