|
ご質問の件ですが、可能です。やや面倒ですが。ASは直接スプールをバックアップできません。(SAVOBJ、SAVLIBともに。)
リリースアップやバージョンアップでは、以下のようにする指示が出ています。

CPYSPLFでパラメータをCTLCHAR(*FCFC)にして、スプールデータを物理ファイルにコピーします。
*FCFCは、改ページとか、改行の制御文字が1バイト、複写先のレコードの1バイト目に含まれます。このとき、漢字を含むのなら、最初から2桁目が空白になります。これは、AS/400のスペックです。空白ができるとは、「1バイト右にズレル」ことです。
だから、漢字を含む場合、
- 受け取りファイルを作成する時は、CRTPFでソースを指定せずに、レコード長を、帳票の桁+2にして、
- かつ、IGCDTA(*YES)にします。IGCDTA(*YES)を忘れると、CPYSPLFでこけます。
- さらに、そのレコードの1から1バイトはそのままで、3桁から最後の桁までを、2桁から上書きするプログラムを作り、走らせます。(簡単なプログラムです。こうしないと、スプールを復元したときに左端1バイト空いてしまいます。
また、英語の属性のスプールならば、CRTPFソース指定せず、レコード長を帳票の桁+1にして、IGCDTA(*NO)です。英語の場合は桁ずれしません。
このファイルを、SAVOBJします。または、ディスケットにダウンロードするかなにかします。
これを、またAS/400で復元した後は、まず、SPLFをOVRPRTFでCTLCHAR(*FCFC)にします。そこへ、この物理ファイルから、単純にCPYFをします。プリンターファイルの属性が*FCFCだと、ここで、帳票が復元されます。
こんなところで、いいかな。漢字のスプールの場合は注意です。テストで、保管、復元を確認してから、実際に作業してみてください。また、定型的な業務にするならば、スプールデータの情報をAPIで取り出し、それをCPYSPLFでメンバー別に複写して、それを復元するようなユーティリティを作成することも可能です。ただし、このデータ、かなり大きな物になりますので、ディスクの空き容量に気をつけてください。1行1レコードで、一頁60行ならば、単純に言って、100頁で6000レコードになります。(*FCFCだと、無駄は省けるのですが、それでも多いです。)それと、確か、RPGの機能にこの保管されたスプールデータを読み込んで、スプールを作成する機能があったと思います。普通は上記のようにCPYFで可能ですが、興味があれば調べてみてください。
|
このマニュアルの付録の「B.0 付録B. 2
バイト文字セット・サポート」は漢字についての記述がまとまっています。
B.5.1 スプール・ファイルのコピー
スプール・ファイル・コピー (CPYSPLF)
コマンドを使用することによって、2
バイト文字データを持つスプール・ファイルをコピーします。ただし、ファイルのコピー先のデータベース・ファイルは、IGCDTA(*YES)
の値を指定して作成されていなければなりません。
2
バイト・データが入っているデータベース・ファイルに、スプール・ファイルをコピーする場合に、余分の桁がシフト・アウト文字用に予約されます。このシフト・アウト文字は、レコードの制御情報とユーザー・データの間に入れられます。次の表は、制御文字
(CTLCHAR)
キーワードに対して指定される値に基づいて、シフト・アウト文字の桁番号を示してあります。
| CTLCHAR の値 |
シフト・アウト文字の桁番号 |
| *NONE |
1 |
| *FCFC |
2 |
| *PRTCTL |
5 |
| *S36FMT |
10 |
|
参考
スプールのオンライン保管と復元
9.27.複写スプールの作成コマンド(訪問者の方からのフリーソフト)
|