

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengonversi dan membongkar data EBCDIC ke ASCII di AWS dengan menggunakan Python
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python"></a>

*Luis Gustavo Dantas, Amazon Web Services*

## Ringkasan
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-summary"></a>

Karena mainframe biasanya meng-host data bisnis penting, memodernisasi data adalah salah satu tugas terpenting saat memigrasikan data ke Amazon Web Services (AWS) Cloud atau lingkungan American Standard Code for Information Interchange (ASCII) lainnya. Pada mainframe, data biasanya dikodekan dalam format Extended Binary-Coded Decimal Interchange Code (EBCDIC). Mengekspor database, Metode Akses Penyimpanan Virtual (VSAM), atau file datar umumnya menghasilkan file EBCDIC biner yang dikemas, yang lebih kompleks untuk dimigrasi. Solusi migrasi database yang paling umum digunakan adalah change data capture (CDC), yang, dalam banyak kasus, secara otomatis mengubah pengkodean data. Namun, mekanisme CDC mungkin tidak tersedia untuk database, VSAM, atau file datar ini. Untuk file-file ini, pendekatan alternatif diperlukan untuk memodernisasi data.

Pola ini menjelaskan cara memodernisasi data EBCDIC dengan mengubahnya menjadi format ASCII. Setelah konversi, Anda dapat memuat data ke database terdistribusi atau memiliki aplikasi di cloud memproses data secara langsung. Pola menggunakan skrip konversi dan file sampel dalam [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub repositori.

## Prasyarat dan batasan
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-prereqs"></a>

**Prasyarat**
+ Akun AWS aktif.
+ File input EBCDIC dan copybook bahasa berorientasi bisnis umum (COBOL) yang sesuai. Contoh file EBCDIC dan copybook COBOL disertakan dalam repositori. [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub Untuk informasi lebih lanjut tentang copybook COBOL, lihat [Enterprise COBOL untuk z/OS 6.4 Panduan Pemrograman](https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf) di situs web IBM.

**Batasan**
+ Layout file yang didefinisikan di dalam program COBOL tidak didukung. Mereka harus tersedia secara terpisah.

**Versi produk**
+ Python versi 3.8 atau yang lebih baru

## Arsitektur
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-architecture"></a>

**Tumpukan teknologi sumber**
+ Data EBCDIC pada mainframe
+ Copybook COBOL

**Tumpukan teknologi target**
+ Instans Amazon Elastic Compute Cloud (Amazon EC2) di cloud pribadi virtual (VPC)
+ Amazon Elastic Block Store (Amazon EBS)
+ Python dan paket yang diperlukan, JavaScript Object Notation (JSON), sys, dan datetime
+ File datar ASCII siap dibaca oleh aplikasi modern atau dimuat dalam tabel database relasional

**Arsitektur target**

![\[Data EBCDIC dikonversi ke ASCII pada sebuah instance EC2 dengan menggunakan skrip Python dan copybook COBOL\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)


Diagram arsitektur menunjukkan proses konversi file EBCDIC ke file ASCII pada sebuah instance: EC2 

1. Menggunakan skrip **parse\$1copybook\$1to\$1json.py**, Anda mengonversi copybook COBOL ke file JSON.

1. Menggunakan file JSON dan skrip **extract\$1ebcdic\$1to\$1ascii.py**, Anda mengonversi data EBCDIC ke file ASCII.

**Otomatisasi dan skala**

Setelah sumber daya yang diperlukan untuk konversi file manual pertama tersedia, Anda dapat mengotomatiskan konversi file. Pola ini tidak termasuk instruksi untuk otomatisasi. Ada beberapa cara untuk mengotomatiskan konversi. Berikut ini adalah ikhtisar dari satu pendekatan yang mungkin:

1. Merangkum perintah AWS Command Line Interface (AWS CLI) dan perintah skrip Python ke dalam skrip shell.

1. Buat fungsi AWS Lambda yang secara asinkron mengirimkan tugas skrip shell ke dalam sebuah instance. EC2 Untuk informasi selengkapnya, lihat [Menjadwalkan lowongan SSH menggunakan AWS Lambda](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/).

1. Buat pemicu Amazon Simple Storage Service (Amazon S3) yang memanggil fungsi Lambda setiap kali file lama diunggah. Untuk informasi selengkapnya, lihat [Menggunakan pemicu Amazon S3 untuk menjalankan fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html).

## Alat
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-tools"></a>

**Layanan AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) menyediakan kapasitas komputasi yang dapat diskalakan di AWS Cloud. Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan, dan dengan cepat meningkatkannya ke atas atau ke bawah.
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) menyediakan volume penyimpanan tingkat blok untuk digunakan dengan instans Amazon Elastic Compute Cloud (Amazon). EC2
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

**Alat lainnya**
+ [GitHub](https://github.com/)adalah layanan hosting kode yang menyediakan alat kolaborasi dan kontrol versi.
+ [Python adalah bahasa](https://www.python.org/) pemrograman tingkat tinggi.

**Repositori kode**

Kode untuk pola ini tersedia di [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub repositori.

## Epik
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-epics"></a>

### Siapkan EC2 instance
<a name="prepare-the-ec2-instance"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Luncurkan sebuah EC2 instance. |  EC2 Instans harus memiliki akses internet keluar. Hal ini memungkinkan instance untuk mengakses kode sumber Python yang tersedia di. GitHub Untuk membuat instance:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS Umum | 
| Instal Git. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS Umum, Linux | 
| Instal Python. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS Umum, Linux | 
| Kloning GitHub repositori. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS Umum, GitHub | 

### Buat file ASCII dari data EBCDIC
<a name="create-the-ascii-file-from-the-ebcdic-data"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Parse copybook COBOL ke dalam file layout JSON. | Di dalam `mainframe-data-utilities` folder, jalankan skrip **parse\$1copybook\$1to\$1json.py**. Modul otomatisasi ini membaca tata letak file dari copybook COBOL dan membuat file JSON. File JSON berisi informasi yang diperlukan untuk menafsirkan dan mengekstrak data dari file sumber. Ini menciptakan metadata JSON dari copybook COBOL. Perintah berikut mengkonversi copybook COBOL ke file JSON.<pre>python3 parse_copybook_to_json.py \<br />-copybook LegacyReference/COBPACK2.cpy \<br />-output sample-data/cobpack2-list.json \<br />-dict sample-data/cobpack2-dict.json \<br />-ebcdic sample-data/COBPACK.OUTFILE.txt \<br />-ascii sample-data/COBPACK.ASCII.txt \<br />-print 10000</pre>Script mencetak argumen yang diterima.<pre>-----------------------------------------------------------------------<br />Copybook file...............| LegacyReference/COBPACK2.cpy<br />Parsed copybook (JSON List).| sample-data/cobpack2-list.json<br />JSON Dict (documentation)...| sample-data/cobpack2-dict.json<br />ASCII file..................| sample-data/COBPACK.ASCII.txt<br />EBCDIC file.................| sample-data/COBPACK.OUTFILE.txt<br />Print each..................| 10000<br />-----------------------------------------------------------------------</pre>Untuk informasi selengkapnya tentang argumen, lihat [file README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) di GitHub repositori. | AWS Umum, Linux | 
| Periksa file tata letak JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)<pre> "input": "extract-ebcdic-to-ascii/COBPACK.OUTFILE.txt",<br /> "output": "extract-ebcdic-to-ascii/COBPACK.ASCII.txt",<br /> "max": 0,<br /> "skip": 0,<br /> "print": 10000,<br /> "lrecl": 150,<br /> "rem-low-values": true,<br /> "separator": "|",<br /> "transf": [<br /> {<br /> "type": "ch",<br /> "bytes": 19,<br /> "name": "OUTFILE-TEXT"<br /> } </pre>Atribut yang paling penting dari file layout JSON adalah:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)Untuk informasi selengkapnya tentang file tata letak JSON, lihat file [README di repositori](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md). GitHub  | AWS Umum, JSON | 
| Buat file ASCII.  | Jalankan skrip **extract\$1ebcdic\$1to\$1ascii.py**, yang termasuk dalam GitHub repositori kloning. Skrip ini membaca file EBCDIC dan menulis file ASCII yang dikonversi dan dapat dibaca.<pre>python3 extract_ebcdic_to_ascii.py -local-json sample-data/cobpack2-list.json</pre>Saat skrip memproses data EBCDIC, ia mencetak pesan untuk setiap batch 10.000 catatan. Lihat contoh berikut ini.<pre>------------------------------------------------------------------<br />2023-05-15 21:21:46.322253 | Local Json file   | -local-json | sample-data/cobpack2-list.json<br />2023-05-15 21:21:47.034556 | Records processed | 10000<br />2023-05-15 21:21:47.736434 | Records processed | 20000<br />2023-05-15 21:21:48.441696 | Records processed | 30000<br />2023-05-15 21:21:49.173781 | Records processed | 40000<br />2023-05-15 21:21:49.874779 | Records processed | 50000<br />2023-05-15 21:21:50.705873 | Records processed | 60000<br />2023-05-15 21:21:51.609335 | Records processed | 70000<br />2023-05-15 21:21:52.292989 | Records processed | 80000<br />2023-05-15 21:21:52.938366 | Records processed | 89280<br />2023-05-15 21:21:52.938448 Seconds 6.616232</pre>Untuk informasi tentang cara mengubah frekuensi cetak, lihat [file README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) di GitHub repositori. | AWS Umum | 
| Periksa file ASCII. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)Jika Anda menggunakan contoh file EBCDIC yang disediakan, berikut ini adalah catatan pertama dalam file ASCII.<pre>00000000: 2d30 3030 3030 3030 3030 3130 3030 3030  -000000000100000<br />00000010: 3030 307c 3030 3030 3030 3030 3031 3030  000|000000000100<br />00000020: 3030 3030 3030 7c2d 3030 3030 3030 3030  000000|-00000000<br />00000030: 3031 3030 3030 3030 3030 7c30 7c30 7c31  0100000000|0|0|1<br />00000040: 3030 3030 3030 3030 7c2d 3130 3030 3030  00000000|-100000<br />00000050: 3030 307c 3130 3030 3030 3030 307c 2d31  000|100000000|-1<br />00000060: 3030 3030 3030 3030 7c30 3030 3030 7c30  00000000|00000|0<br />00000070: 3030 3030 7c31 3030 3030 3030 3030 7c2d  0000|100000000|-<br />00000080: 3130 3030 3030 3030 307c 3030 3030 3030  100000000|000000<br />00000090: 3030 3030 3130 3030 3030 3030 307c 2d30  0000100000000|-0<br />000000a0: 3030 3030 3030 3030 3031 3030 3030 3030  0000000001000000<br />000000b0: 3030 7c41 7c41 7c0a                      00|A|A|.</pre> | AWS Umum, Linux | 
| Evaluasi file EBCDIC. | Di EC2 konsol Amazon, masukkan perintah berikut. Ini membuka catatan pertama dari file EBCDIC.<pre>head sample-data/COBPACK.OUTFILE.txt -c 150 | xxd</pre>Jika Anda menggunakan contoh file EBCDIC, berikut ini adalah hasilnya.<pre> 00000000: 60f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 f0f0 `...............<br /> 00000010: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 ................<br /> 00000020: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 ................<br /> 00000030: f0f0 f0f0 f0f0 d000 0000 0005 f5e1 00fa ................<br /> 00000040: 0a1f 0000 0000 0005 f5e1 00ff ffff fffa ................<br /> 00000050: 0a1f 0000 000f 0000 0c10 0000 000f 1000 ................<br /> 00000060: 0000 0d00 0000 0000 1000 0000 0f00 0000 ................<br /> 00000070: 0000 1000 0000 0dc1 c100 0000 0000 0000 ................<br /> 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................<br /> 00000090: 0000 0000 0000 ......</pre>Untuk mengevaluasi kesetaraan antara sumber dan file target, diperlukan pengetahuan komprehensif tentang EBCDIC. Misalnya, karakter pertama dari contoh file EBCDIC adalah tanda hubung (). `-` Dalam notasi heksadesimal dari file EBCDIC, karakter ini diwakili oleh, dan dalam notasi heksadesimal dari file ASCII`60`, karakter ini diwakili oleh. `2D` Untuk tabel EBCDIC-to-ASCII konversi, lihat [EBCDIC ke ASCII](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii) di situs web IBM. | AWS Umum, Linux, EBCDIC | 

## Sumber daya terkait
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-resources"></a>

**Referensi**
+ [Set karakter EBCDIC (dokumentasi](https://www.ibm.com/docs/en/zos-basic-skills?topic=mainframe-ebcdic-character-set) IBM)
+ [EBCDIC ke ASCII (dokumentasi IBM](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii))
+ [COBOL](https://www.ibm.com/docs/en/i/7.1?topic=languages-cobol) (dokumentasi IBM)
+ [Konsep dasar JCL](https://www.ibm.com/docs/en/zos-basic-skills?topic=collection-basic-jcl-concepts) (dokumentasi IBM)
+ [Connect ke instans Linux Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) ( EC2 dokumentasi Amazon)

**Tutorial**
+ [Menjadwalkan pekerjaan SSH menggunakan AWS Lambda](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/) (postingan blog AWS)
+ [Menggunakan pemicu Amazon S3 untuk menjalankan fungsi Lambda (dokumentasi AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html))