PCとメインフレーム間でのファイル転送・基本編

IBM3270エミュレーターPcommWinによるファイル転送方法

使い慣れたWindowsやUnixのエディターでソースプログラムやJCLを作成した場合は、出来上がったファイルをメインフレーム側にアップロードすることができます。反対に、既にメインフレーム側に置かれているデータセットやメンバーをファイルとしてダウンロードすることもできます。
PCとメインフレーム間のファイル転送には主にFTPか3270エミュレーターのファイル転送機能が利用されています(*1)。FTPは、WindowsやUnixなどTCP/IPネットワークが利用できるコンピューターであれば標準で装備されるツールなので広く知られています。z/OSでもFTPサーバーが起動できるので、PC側にFTPクライアントのソフトウェアがあれば簡単にファイル転送を行うことができるのですが、セキュリティ上の理由などでFTPの使用が禁止や制限されている場合があります(*2)。
3270エミュレーターのファイル転送機能は、現在のようにTCP/IPネットワークが普及する遙か以前から使われてきた方法で、転送するファイルのデータが3270端末画面を表示するためのプロトコル・データ(*3)の中に組み込まれて送受信されます(*4)。3270エミュレーターを使用したファイル転送では、実際のファイル転送処理はエミュレーター側ではなくホスト側で動作する転送処理プログラムによって行われます。実際のファイル転送の操作方法はエミュレーターによって異なりますが、ホスト側のプログラムは転送処理の過程でエミュレーターによってTSOコマンドが自動入力されて起動されます。

ここで紹介する方法は、IBMの3270端末エミュレーター(PcommWin)によるものです。異なるエミュレーターを使用している場合は、それぞれのエミュレーターのヘルプやマニュアルを参照して下さい。


*1 その他、ISPFのクライアント/サーバー・コンポーネントやISV製品などが使われる場合もある。
*2 データの漏洩を防ぐのが目的であればFTPに限らずすべてのファイル転送機能が利用できないか制限されているかも知れない。
*3 3270端末では、画面の表示データはホスト・コンピューター側のプログラムが作成することになっている。画面に表示したり画面から入力されたデータの形式は3270データ・ストリームと呼ばれ、画面の形式、どの位置にどの文字をどのような装飾で表示するのか、画面上のどこに入力されたデータなのか、どのキーで送信されたのか、といった細かな取り決めが定められている。
*4 転送データは実際には画面に表示されることはなく、内部の制御情報をやり取りする構造化フィールドの一種としてデータ・ストリーム内に組み込まれる。

PCのファイルをz/OSにアップロードする

PCのファイルをz/OSにアップロードするには、ISPFのコマンド・シェル・パネルもしくはTSOのREADYプロンプトを表示します。

以下に示す手順は、IBMのパーソナル・コミュニケーションズ(PcommWin)の3270エミュレーターによるものですが、どのベンダーのエミュレーターであってもファイル転送機能はTSO下のプログラムによって処理されます。

メニューバーもしくはツールバーから、「ホストへファイルを送信」を選びます。

表示されたダイアログ・ボックスに、転送元のPC側ファイル名、転送先のホスト側データセット名、転送タイプを指定します。データセット名の先頭修飾子がユーザーIDと異なっていれば、データセット名をシングル・クォート記号で囲みます。区分データセットのメンバーを指定する場合は、データセット名の後の()内にメンバー名を書き、全体をシングル・クォート記号で囲みます。
データセット名が入力できたら、「リストの追加」ボタンを押して転送ファイルのリストに追加します。この時点ではまだ送信されません。

実際にアップロード処理を開始するには「送信」ボタンを押します。ファイル転送が開始されると、ホスト側でファイル転送プログラム(*5)が起動します。エミュレーター側のダイアログ・ボックスで入力した内容は、ファイル転送プログラム起動コマンドのパラメーターとして指定されます。


*5 日本語3270エミュレーターではAPVUFILEというTSOプログラムを起動する。その他にIND$FILEがあり、こちらがz/OSの標準版である。APVUFILEはIND$FILEをDBCS文字対応に改変したものである。

※コマンドはエミュレーターによって自動入力される。予め画面をTSOコマンド・シェルにしておくのは、コマンドの自動入力のためです。

転送処理が開始されると、進捗状況を示すダイアログ・ボックスが表示されます。

コマンド・シェルの画面に次のようなメッセージが出て転送処理が失敗した場合は、エミュレーター側の転送オプションを見直してみます。

既存のデータセットへのアップロードでは、レコードの形式や長さが指定されるとリジェクトされてしまいます。エミュレーター側でこれらのオプションを指定する必要があるのは、アップロード時に新規のデータセットを割り振る場合です。新規のデータセットにアップロードする場合でも、事前にISPFで空のデータセットを作成してからファイル転送を行えば、レコード形式やレコード長を指定する必要はありません。
なお、オプション設定とデータセット属性の矛盾などのエラーではなく、正常な状況でも転送処理が失敗することがあります。その代表例が排他制御の失敗です。

複数のTSOユーザーやバッチ処理などと共用されるデータセットに転送する場合、他のユーザーやバッチ・ジョブが読み込み専用でアクセスしていてもファイル転送は失敗します。ファイル転送プログラムは転送先のデータセットを占有できないと処理を中断するからです。この場合は、他のユーザーにデータセットの表示(メンバー・リストの表示も含む)を止めてもらい、バッチ処理であればジョブが終了するのを待ってからアップロード操作をやり直します。

z/OSのデータセットやメンバーをPCにダウンロードする

z/OSのデータセットやメンバーをPCのファイルとしてダウンロードするには、ISPFのコマンド・シェル・パネルもしくはTSOのREADYプロンプトを表示します。

以下に示す手順は、IBMのパーソナル・コミュニケーションズ(PcommWin)の3270エミュレーターによるものですが、どのベンダーのエミュレーターであってもファイル転送機能はTSO下のプログラムによって処理されます。

メニューバーもしくはツールバーから、「ホストからファイルを受信」を選びます。

表示されたダイアログ・ボックスに、転送元のホスト側データセット名、転送先のPC側ファイル名、転送タイプを指定します。データセット名の先頭修飾子がユーザーIDと異なっていれば、データセット名をシングル・クォート記号で囲みます。区分データセットのメンバーを指定する場合は、データセット名の後の()内にメンバー名を書き、全体をシングル・クォート記号で囲みます。
ダウンロードするメンバーがJCLやソースプログラムであれば転送タイプは「text」ですが、インストール用のパッケージ・データや圧縮されたアーカイブ・データなどの場合は「binary」を指定します。
データセット名が入力できたら、「リストの追加」ボタンを押して転送ファイルのリストに追加します。1度の受信操作で複数のメンバーやデータセットをダウンロードすることもできます。他にもダウンロードしたいメンバーあるいはデータセットがあれば、改めてデータセット名とファイル名を入力して「リストの追加」ボタン転送リストに追加していきます。なお、転送リストに追加しただけではまだ受信されません。

実際にダウンロード処理を開始するには「受信」ボタンを押します。ファイル転送が開始されると、ホスト側でファイル転送プログラム(*6)が起動します。エミュレーター側のダイアログ・ボックスで入力した内容は、ファイル転送プログラム起動コマンドのパラメーターとして指定されます。


*6 日本語3270エミュレーターではAPVUFILEというTSOプログラムを起動する。その他にIND$FILEがあり、こちらがz/OSの標準版である。APVUFILEはIND$FILEをDBCS文字対応に改変したものである。

※コマンドはエミュレーターによって自動入力される。予め画面をTSOコマンド・シェルにしておくのは、コマンドの自動入力のためです。

転送処理が開始されると、進捗状況を示すダイアログ・ボックスが表示されます。