Referensi parser Copybook

Mainframe Connector mendukung dua versi parser copybook:

  • Parser copybook native: Parser copybook Native mengimplementasikan parser berbasis ANTLR4, mendukung {i>copybook<i} COBOL, dan merupakan versi parser yang direkomendasikan.
  • Parser copybook lama: Parser copybook lama merupakan versi lama parser yang memiliki dukungan untuk format buku salinan (copybook).

Anda dapat menentukan parser yang ingin digunakan berdasarkan copybook. Untuk selengkapnya informasi mengenai cara mendefinisikan parser yang ingin Anda gunakan, lihat Menentukan parser copybook.

Parser copybook native

Parser salinan buku native adalah versi terbaru dari parser dan digunakan secara {i>default<i}. Parser copybook native mengimplementasikan parser berbasis ANTLR4 dan mendukung {i>copybook<i} COBOL.

Bagian ini mencantumkan tugas pra-pemrosesan yang dilakukan oleh jenis data yang didukung oleh parser Copybook native dan batasan penggunaannya.

Prapemrosesan

Sebelum mengurai buku salinan, copybook Native parser akan memproses data terlebih dahulu dan melakukan tugas berikut:

  • Menghapus baris komentar.
  • Menyelesaikan kelanjutan baris.
  • Mengosongkan area nomor baris dan kolom 73.
  • Mempertahankan pernyataan khusus praprosesor seperti EJECT, SPACE, dan TITLE. Kolom ini diuraikan, tetapi diabaikan. Copybook yang berisi parameter praprosesor yang dapat digunakan oleh COPY REPLACING tidak didukung oleh Parser copybook native. Dalam {i>copybook<i} (teks) ini, ID diapit oleh tanda titik dua (:).

Jenis data dan batasan yang didukung

Berikut adalah jenis data yang didukung oleh parser copybook dan pembatasan penggunaannya:

  • Level 66 (ALIAS) atau 77 (STANDALONE) tidak didukung.
  • Hanya gunakan kolom PICTURE. Kolom PICTURE berikut didukung:
    • Pic A, Pic, B, Pic G (DBCS), Pic N (nasional atau DBCS), Pic U (UTF8), Pic X, dan desimal zona (presisi maks. 38, skala maks 38)
  • Titik mengambang Heksadesimal (HFP) IBM didukung.
  • REDEFINES tidak didukung.
  • Hanya gunakan kolom COMP berikut. ALIGN dan OCCURS tidak didukung.
    • COMP
    • COMP4
    • BINARY
    • COMP3
    • DESIMAL DIPAKET
  • DATE dan TIMESTAMP didukung.
  • Kolom Himpunan karakter byte ganda (DBCS) Pic G dan Pic N adalah didukung dan harus digunakan sebagai pengganti Pic T, yang sekarang tidak digunakan lagi. Kepada gunakan kolom Pic N sebagai DBCS tanpa menentukan USAGE DISPLAY-1, Anda harus menetapkan variabel lingkungan NSYMBOL untuk DBCS. Secara default, NSYMBOL disetel ke NATIONAL yang menetapkan USAGE NATIONAL ke kolom Pic N yang tidak memiliki klausa USAGE. Perlu diketahui bahwa NSYMBOL hanya dapat ditetapkan ke NATIONAL atau DBCS.
  • String karakter dengan panjang variabel didukung.
  • Klausa SIGN didukung.
  • Anda harus menyejajarkan semua kolom dan menggunakan satu tingkat indentasi.
  • Komentar didukung.

Dukungan untuk kolom tanggal dan stempel waktu

Mainframe Connector mendukung pemindahan data tanggal dan stempel waktu masuk dan keluar BigQuery. Untuk melakukannya, Anda harus menentukan variabel lingkungan yang dimulai dengan kata SUFFIX dalam format berikut:

SUFFIX_SUFFIX_STRING="--bqtype TYPE --format FORMAT --timezone TIMEZONE"

Daftar berikut menjelaskan format tersebut secara lebih detail:

  • SUFFIX_SUFFIX_STRING: Variabel lingkungan yang yang dapat Anda gunakan untuk menentukan data tanggal dan stempel waktu. SUFFIX_STRING sesuai dengan akhiran -SUFFIX_STRING atau _SUFFIX_STRING yang harus ditafsirkan sebagai tanggal atau {i>stempel waktu<i} ketika digunakan sebagai akhiran nama {i>field<i} di buku salinan. Pastikan bahwa SUFFIX_STRING tidak berisi tanda hubung atau garis bawah.
  • --bqtype: Menentukan TYPE BigQuery kolom tersebut. Jenis BigQuery yang didukung adalah DATE dan TIMESTAMP.
  • --format: Parameter yang menentukan format tanggal atau {i>stempel waktu<i}. Anda dapat menentukan maksimal lima format berbeda yang dipisahkan dengan tanda koma. Jika beberapa format dapat mencocokkan input yang diberikan, format pertama yang cocok adalah yang digunakan untuk memuat ke BigQuery. Jika beberapa format ditentukan untuk mengekspor, hanya format pertama yang digunakan. Untuk informasi selengkapnya tentang lihat Format tanggal dan stempel waktu yang didukung.
  • --timezone: Parameter opsional untuk jenis TIMESTAMP. Secara default, zona waktunya adalah UTC. Untuk mengetahui informasi selengkapnya tentang zona waktu yang didukung lihat Format zona waktu yang didukung.
  • --omitsuffix (Opsional): Jika parameter ini ditentukan, -SUFFIX_STRING atau _SUFFIX_STRING dihapus dari nama kolom yang muncul di BigQuery.

Guna menambahkan alias untuk SUFFIX_SUFFIX_STRING, Anda dapat menetapkan variabel lingkungan SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING.

Contoh:

  • Jika Anda menentukan variabel lingkungan sebagai SUFFIX_DT8="--bqtype DATE --format yyyyMMdd", kolom dengan akhiran -DT8 atau _DT8 akan menjadi Kolom jenis DATE di BigQuery, dan polanya akan menjadi yyyyMMdd.
  • Jika Anda menentukan variabel lingkungan sebagai SUFFIX_DT10="--bqtype DATE --format MM-dd-yyyy", kolom dengan akhiran -DT10 atau _DT10 akan menjadi Kolom jenis DATE di BigQuery, dan polanya akan menjadi MM-dd-yyyy.
  • Jika Anda menentukan variabel lingkungan sebagai SUFFIX_DT="--bqtype DATE --format 'MM-dd-yyyy,MM/dd/yyyy'", kolom dengan akhiran -DT atau _DT akan menjadi Kolom jenis DATE di BigQuery, dan polanya akan menjadi MM-dd-yyyy atau MM/dd/yyyy.
  • Jika Anda menentukan dua variabel lingkungan sebagai SUFFIX_TIMESTAMP="--bqtype TIMESTAMP --format 'yyyy-MM-dd HH:mm:ss.SSSSSS' --timezone America/Los_Angeles" dan SUFFIX_TS=$SUFFIX_TIMESTAMP, kolom dengan salah satu akhiran berikut: -TIMESTAMP, _TIMESTAMP, -TS, atau _TS akan berupa jenis TIMESTAMP kolom di BigQuery, dan polanya adalah yyyy-MM-dd HH:mm:ss.SSSSSS dengan zona waktu America/Los_Angeles.

Dukungan untuk kolom DBCS

Pastikan hal berikut saat menggunakan kolom DBCS:

  • Saat menggunakan kolom PIC G atau Pic N DBCS, Anda harus memberikan salah satu dari hal berikut encoding himpunan karakter multi-byte (MBCS) yang valid dalam encoding atau dalam variabel lingkungan ENCODING saat menggunakan Perintah gsutil cp atau bq export:
    • X-IBM930
    • X-IBM933
    • X-IBM935
    • X-IBM937
    • X-IBM939
    • X-IBM942
    • X-IBM942C
    • X-IBM943
    • X-IBM943C
    • X-IBM949
    • X-IBM949C
    • X-IBM950
    • X-IBM964
    • X-IBM970
    • X-IBM1364
  • Jika isian {i>copybook<i} hanya berisi byte DBCS, tetapi byte ini dikelilingi oleh shift-out (0x0E) dan shift-in (0x0F), Anda harus menambahkan akhiran _DBCS ke nama kolom untuk memastikan bahwa byte ini didekode sebagai DBCS.

Misalnya, jika data Anda sesuai dengan kolom {i>copybook<i} 03 FLD01 PIC N USAGE DISPLAY-1 berisi byte 0x43 dan 0xC5 dalam encoding x-IBM930 yang tidak dikelilingi oleh 0x0E dan 0x0F, Anda harus mengganti nama kolom copybook menjadi 03 FLD01-DBCS PIC N USAGE DISPLAY-1 untuk mendekode dengan benar data DBCS.

Dukungan untuk string karakter dengan panjang variabel

Parser copybook Native mendukung hal berikut Kolom struct:

  • 10 variabel
  • 15 var-LEN PIC 9(4) PERBANDINGAN PENGGUNAAN
  • 15 var-TEXT PIC X(n)

Kolom pertama di kolom struct adalah panjang kolom kedua bidang, yaitu bidang string. Anda mungkin harus menambahkan beberapa pelapis di akhir merekam berdasarkan panjang kumpulan data seperti yang ditunjukkan dalam gambar berikut.

Padding ditambahkan ke string karakter dengan panjang bervariasi.
Gambar 1. Padding ditambahkan ke string karakter dengan panjang bervariasi.

Mainframe Connector menghapus akhiran dari nama variabel sebelum menyimpan data di BigQuery. Dalam contoh ini, nama variabel akan var.

Untuk menggunakan kolom struct, tetapkan variabel lingkungan BQSH_FEATURE_VARIABLE_LENGTH_ENABLED ke yes atau true.

Saat menggunakan kolom struct, pastikan hal berikut:

  • Akhiran dari parameter pertama di struct adalah -LEN. Jika Anda ingin menggunakan akhiran yang berbeda, Anda harus menetapkan variabel lingkungan BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX menjadi akhiran yang ingin Anda gunakan.
  • Akhiran parameter kedua di struct adalah -TEXT. Jika Anda ingin menggunakan akhiran yang berbeda, Anda harus menyetel variabel lingkungan BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX menjadi akhiran yang ingin Anda gunakan.

Kolom dan konstruksi yang tidak didukung

Bagian berikut yang menjelaskan kolom dan konstruksi tidak didukung oleh

Konstruksi COBOL

Konstruksi COBOL meskipun konstruksi ini tidak didukung. Jika Anda menggunakan di {i>copybook<i} Anda, Mainframe Connector menunjukkan sebuah {i>error<i}.

  • dataAlignedClause
  • dataBlankWhenZeroClause
  • dataCommonOwnLocalClause
  • dataIntegerStringClause
  • dataJustifiedClause
  • dataOccursClause
  • dataReceivedByClause
  • dataRecordAreaClause
  • dataRenamesClause
  • dataSignClause
  • dataSynchronizedClause
  • dataThreadLocalClause
  • dataTypeClause
  • dataTypeDefClause
  • dataUsingClause

Jenis data

Tipe data COBOL seperti COMP-1 dan COMP-2 juga didukung.

Parser copybook lama

Parser copybook lama adalah versi parser lama yang mendukung non-COBOL. Jika Anda menggunakan {i>copybook <i}berbasis DSL, {i>Parser<i} yang lama mungkin lebih cocok sebagai parser copybook Native dapat menyebabkan error.

Anda dapat menggunakan DD buku salinan dengan batasan berikut:

  • Level 66 (ALIAS) atau 77 (STANDALONE) tidak didukung.
  • REDEFINES tidak didukung.
  • Baris komentar tidak didukung.
  • Kolom dengan panjang 10 yang namanya diakhiri dengan DATE atau DT adalah tanggal. Decoding berbeda untuk kolom tersebut.
  • Hanya gunakan kolom COMP berikut. ALIGN dan OCCURS tidak didukung.
    • COMP
    • COMP4
    • BINARY
    • COMP3
    • DESIMAL DIPAKET
  • Hanya gunakan kolom PICTURE. Tentukan kolom PICTURE pada baris yang sama, secara langsung setelah nama {i>field<i}.
  • Anda harus menyejajarkan semua kolom dan menggunakan satu tingkat. Komentar tidak didukung.
  • Pastikan kolom 1 sampai 6 selalu berisi kosong.