Cara menyalin hanya kolom yang dipilih dari file input ke file output di jcl sort

Saya mencoba menyalin data pada posisi (50,10) dari file masukan saya ke file keluaran, tetapi saya mengalami masalah. Ukuran file masukan saya adalah 100; data yang dibutuhkan adalah dari posisi ke-50 untuk 10 byte berikutnya.

Saya telah menggunakan opsi berikut tetapi masing-masing opsi menyebabkan perubahan. Saya telah mengambil file keluaran sepanjang 10 saja, karena saya hanya membutuhkan 10 byte. Tapi kata abend. OUTREC RECORD LENGTH = 10

SORTIN   : RECFM=VB   ; LRECL=   100; BLKSIZE=  1000 
SORTIN   : DSNAME=MNV.TESTS.DF.CPR810S1.EZ2OP        
OUTREC RECORD LENGTH =     10                         
SORTOUT  RECFM INCOMPATIBLE                          
SORTOUT  : RECFM=FB   ; LRECL=      ; BLKSIZE=    

Saya telah menggunakan opsi di bawah ini:

OUTREC FIELDS(50,10)              
SORT FIELDS(1,4,CH,A)    
--------didn't work------------

SORT FIELDS=COPY            
OUTREC FIELDS=(115,9,125,10) 
--------didn't work------------

SORT  FIELDS=COPY                        
BUILD=(50,10)                  
--------didn't work------------

INREC FIELDS=(50,10)        
SORT FIELDS=(1,3,CH,A) 
--------didn't work------------

person Agent Mahone    schedule 30.08.2014    source sumber


Jawaban (1)


Saya tahu tidak ada gunanya menyebutkan bahwa Anda jarang menerima atau memberikan masukan, dan Anda juga bukan seorang pemilih.

Untuk beberapa alasan Anda memotongnya, tetapi semua pesan yang Anda posting datang dengan awalan WER dan nomor pesan. Jika Anda membaca manual SyncSORT, Anda akan menemukan semua pesan didokumentasikan.

Lupakan itu sejenak. Anda telah mengeposkan SORTOUT RECFM INCOMPATIBLE. Mengapa terus membicarakan rekor panjangnya? RECFM. RECFM. Anda telah menyertakan teks pesan yang menunjukkan RECFM dari SORTIN, dan juga teks yang menunjukkan RECFM dari SORTOUT. Mereka masing-masing adalah VB dan FB. Jika Anda melihat pesan di manual, Anda akan menemukan bahwa Anda belum melakukan sesuatu yang eksplisit untuk membuatnya berbeda.

Anda memiliki dua pilihan. VTOF atau KONVERSI. Anda dapat menggunakannya di OUTREC (saya yakin) dan OUTFIL (pasti).

 OPTION COPY
 OUTFIL VTOF,
        BUILD=(50,10)

Mengapa Anda ingin mencoba menyortir file, saya tidak tahu, dan Anda harus sadar dengan tidak hanya membuat sintaksis tidak akan berhasil.

Untuk SORT, secara default, file keluarannya adalah RECFM yang sama dengan masukan. Catatan dengan panjang variabel harus selalu berisi RDW, 1,4 dan data itu sendiri dimulai pada posisi 5.

Jika Anda memerlukan file keluaran RECFM yang berbeda, maka Anda harus menjelaskannya secara eksplisit (dengan CONVERT, FTOV atau VTOF).

Saat membuat catatan F, tidak ada RDW, jadi BUILD=(50,10) Anda adalah format yang benar (jika Anda kehabisan empat byte, ingatlah bahwa untuk catatan V, data dimulai pada posisi lima, jadi Anda perlu menambahkan empat ke semua posisi awal yang tidak memperhitungkan RDW (seperti tata letak rekaman COBOL).

Saat membuat V dari F, tanpa RDW, FTOV/CONVERT akan membuatnya.

Dengan masukan V dan keluaran V, selalu tentukan (1,4 di awal pernyataan BUILD Anda.

person Bill Woodger    schedule 30.08.2014
comment
maaf sudah lama absen pak. Saya hanya membuka internet beberapa kali. Pasti akan lebih sering mengunjungi dan berpartisipasi. Saya telah mencoba menggunakan FTOV tetapi saya mendapatkan OUTREC RDW NOT INCLUDED yang lagi-lagi karena jenis file yang berbeda. Saya membuat keduanya sebagai file tetap dan berfungsi dengan baik dengan OPTION COPY OUTREC BUILD=(50,9) yang sangat sederhana tetapi saya masih tidak mengerti mengapa kami mendapat masalah dalam mengambil kolom file VB di file tetap. ini sungguh keterlaluan. - person Agent Mahone; 31.08.2014
comment
@AgentMahone kesalahan saya: FTOV bersifat tetap untuk variabel; VTOF adalah variabel-ke-tetap. Memperbarui. - person Bill Woodger; 31.08.2014