Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

LẬP TRÌNH RPG

I. Cấu trúc của chương trình RPG III:


- Header (Control) : cung cấp mặc định cho source.
- File: xác định các file chương trình sẽ sử dụng.
- Definition: định nghĩa biến và các loại dữ liệu khác chương trình sẽ sử dụng.
- Input: mô tả các file input được lưu trữ.
- Calculation: mô tả chi tiết thủ tục chương trình sẽ thực hiện.
- Output: mô tả chương trình trả kết quả về.
- Procedure boundary: phần kết thúc chương trình.
Hình thức RPG ban đầu này là duy nhất theo một số cách:
1 - 5 loại bản ghi khác nhau đã được sử dụng để làm mọi thứ
"F" dành cho định nghĩa tệp
"I" dành cho định nghĩa đầu vào (bố cục bản ghi)
"C" là để tính toán
"O" dành cho định nghĩa đầu ra
"E" là để xử lý ngoại lệ
2 - Có nhiều tính năng xử lý tự động như "cycle":
Quá trình xử lý chu kỳ tự động đọc tệp đầu vào và đã tạo các tệp đầu ra… nghĩa là không có câu
lệnh đọc hoặc ghi nào được cần thiết.
3 - Cố định vị trí cột cho các giá trị của từng câu lệnh lập trình. Đó là, không giống như COBOL,
C, Java hoặc Basic, mã này không ở dạng tự do.
4 - Việc sử dụng các Chỉ báo hoặc Công tắc là rất cần thiết. Một công tắc với giá trị '0' bị tắt và giá
trị '1' được bật. Công tắc đã được sử dụng để xác định kết quả của hoạt động I-O và cần thiết để so
sánh đơn giản hướng dẫn. Ví dụ: thay vì một câu lệnh có nội dung như sau:
NẾU CTR > 0, HÃY LÀM GÌ
RPG đọc thích hơn
SO SÁNH CTR về 0 và bật Chỉ báo 90 nếu >
Nếu Chỉ báo 90 đang bật, hãy LÀM GÌ
Các chương trình đôi khi khá xấu xí. Việc sử dụng các chỉ số làm cho nhiều chương trình rất khó
hiểu.
RPG đã phát triển độc đáo để trông ngày càng giống các ngôn ngữ hiện đại khác. Mặc dù các chỉ
báo vẫn được sử dụng cho các hoạt động Nhập-Xuất (đọc và ghi), nhưng các hoạt động có điều
kiện tiêu chuẩn hiện đã khả dụng. Các toán hạng IF/THEN, DoWhile, Do Until và Select Case tồn
tại. Mặc dù vẫn chưa hoàn toàn ở dạng tự do, nhưng các câu lệnh có các phần ở dạng tự do. Ngoài
ra, các hàm xử lý chuỗi mạnh mẽ như %trim, %subst, %len và %scan đều có sẵn. Nếu bạn đã quen
thuộc với các khái niệm về lập trình có cấu trúc, bạn sẽ thấy rằng RPG có mọi thứ cần thiết cho mã
có cấu trúc.
Vì vậy, trong khi RPG đã có tuổi đời khoảng 40 năm, hình thức mới nhất của nó (RPG IV) hiện
đại và có cấu trúc. Vấn đề là nhiều chương trình vẫn đang được sử dụng có phong cách lập trình
rất cũ. Vì vậy, bạn thực sự phải làm quen với cả RPG/400 (còn được gọi là RPG III) và RPG IV
(còn được gọi là RPG ILE).
RPG là một ngôn ngữ đầy đủ tính năng có thể thực hiện tất cả các chức năng xử lý dữ liệu: đọc
tệp, truy xuất dữ liệu ngẫu nhiên, điều hướng qua các chỉ mục, đọc và ghi vào thiết bị đầu cuối dữ
liệu hoặc tệp hiển thị, tạo báo cáo in và tệp cơ sở dữ liệu.
Nếu bạn vẫn lo ngại rằng RPG đã quá cũ để trở nên hữu ích, hãy cân nhắc rằng Visual Basic và
ASP thực sự chỉ là những phiên bản mới của BASIC. BASIC cũ như RPG. Ngoài ra, bạn nên biết
rằng RPG ILE có thể tạo các đối tượng được biên dịch liên kết với các mô-đun được viết bằng các
ngôn ngữ khác (như C) và có thể được sử dụng để xử lý các tập lệnh CGI trên internet và xuất
HTML động. Không đua đâu.
Nếu bạn có một cuốn sách RPG, tôi khuyên bạn nên sử dụng nó bổ sung cho (hoặc thay cho)
hướng dẫn này. Đó là một nhiệm vụ đầy thách thức để mô tả một ngôn ngữ phức tạp như vậy trong
các chủ đề ngắn gọn, dễ đọc.
Để tiếp tục, bạn cần phải làm quen với PDM (xem chủ đề 4) và đã hoàn thành bài tập trong chủ đề
5 sao chép tệp.
Vì điều quan trọng là phải biết cách làm cũ (RPG/400) và cách mới (RPG/ILE), tôi sẽ trình bày
từng chương trình chúng tôi viết bằng cả hai ngôn ngữ. Tìm hiểu phong cách RPG/400 để bạn có
thể kiếm được việc làm. Tìm hiểu RPG/ILE để bạn có thể thấy ngôn ngữ này đã trở nên hiện đại
như thế nào.
Chủ đề 5 đã chỉ cho bạn cách sao chép tệp có tên CUST vào thư viện người dùng của bạn. Vì đây
sẽ là tệp đầu vào cho chương trình của chúng tôi, hãy đảm bảo rằng danh sách thư viện của bạn
bao gồm thư viện người dùng của bạn. Tôi muốn có thư viện này làm thư viện hiện tại của mình.
Vì vậy, hãy sử dụng DSPLIBL để hiển thị danh sách thư viện của bạn. Nếu bạn không thấy thư
viện người dùng của mình trong danh sách, hãy sử dụng lệnh CHGCURLIB USER999. Thao tác
này sẽ thay đổi thư viện hiện tại của bạn thành USER999. Hãy nhớ rằng khi tôi nói USER999, ý
tôi là ID người dùng của bạn.
Bạn có thể xem tệp dữ liệu của mình bằng lệnh:
RUNQRY QRYFILE(CUST)
Nếu điều này không hiển thị tệp của bạn, thì bạn đã không sao chép tệp (xem Chủ đề 5) hoặc danh
sách thư viện của bạn không bao gồm thư viện người dùng của bạn. Bạn sẽ thấy rằng địa chỉ cho
mọi bản ghi là "123 ĐƯỜNG CHÍNH". Chúng ta sẽ viết chương trình đọc bản ghi đầu tiên của tệp
và thay đổi địa chỉ thành "456 OAK". Trong hướng dẫn tiếp theo, chúng tôi sẽ chuyển đổi chương
trình sang RPG-ILE (RPG IV). Trong các chủ đề sau, chúng tôi sẽ thay đổi chương trình để đọc
mọi bản ghi trong tệp và thay đổi địa chỉ thành "456 OAK" trong mọi bản ghi.
Chúng ta cần nhập các câu lệnh nguồn chương trình, vì vậy hãy khởi động PDM (STRPDM). Bạn
sẽ thấy một cái gì đó như sau:
Nhấn F23 (SHIFT-F11):
Chương trình mẫu:
// This program produces a year-to-date sales report. The report data
// comes directly from input file Customers.
// Date Written: 12/15/2006

FCustomers IF F 152 Disk


FQprint 0 F 132 Printer Oflind(*Inof)
ICustomers NS
I 1 4 Accountid
I 5 8 Salesperson
I 9 43 Name
I *USA D 132 141 Lastsaledate
I 142 152 2Ytdsales

/Free
Except Headings;
Read Customers;

Dow Not %Eof(Customers);

If *Inof;
Except Headings;
*Inof = *Off;
Endif;

Except Detail;
Read Customers;
Enddo;

*Inlr = *On;
Return;

/End-Free

0Qprint E Headings 2 2
0 16
'YTD SALES REPORT'
0 56
'DATE'
0 *Date Y 67
'PAGE'
0 Page Z 79

0 E Headings 1
0 4
'ACCT'
0 11
'SALES'
0 65
'YTD'
0 78
'DATE OF'

0 E Detail 1
0 Accountid 4
0 Salesperson 11
0 Name 49
0 Ytdsales 66
0 Lastsaledate 79

You might also like