Bài học theo mô-đun (2/2)
Bảng và Điều khoản OCCURS
Trong COBOL, không có từ khóa "mảng" hoặc "vectơ" để xác định danh sách dữ liệu đồng nhất. Với mục đích này, bạn sử dụng mệnh đề OCCURS để chỉ định số lần một biến hoặc cấu trúc lặp lại trong bộ nhớ.
Xác định bảng bằng OCCURS
Mệnh đề OCCURS được thêm vào phần khai báo biến phụ (ví dụ: cấp 05 trở lên) trong cấu trúc nhóm (cấp 01):
01 WS-SALES-DATA.
05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.Trong ví dụ này, WS-MONTHLY-SALES là một bảng bao gồm 12 phần tử số, mỗi phần tử có 4 chữ số. Bộ nhớ được phân bổ cho bản ghi này sẽ có chính xác 12 * 4 = 48 ký tự.
Truy cập các phần tử và chỉ mục
Để truy cập một phần tử cụ thể trong bảng, hãy chỉ định chỉ mục trong ngoặc đơn ngay sau tên trường.
[! QUAN TRỌNG] Không giống như hầu hết các ngôn ngữ hiện đại sử dụng lập chỉ mục dựa trên 0, COBOL sử dụng lập chỉ mục dựa trên 1. Phần tử đầu tiên nằm ở chỉ mục
1, phần tử thứ hai ở chỉ mục2, v.v.
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).Duyệt qua một bảng (Lặp lại)
Để lặp qua các thành phần của bảng, bạn có thể sử dụng câu lệnh PERFORM VARYING hoặc quản lý bộ đếm theo cách thủ công trong vòng lặp PERFORM UNTIL:
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.Hãy tự mình thử
Khai báo bảng gồm 5 nhiệt độ thập phân (3 chữ số nguyên và 1 chữ số thập phân) theo cấu trúc nhóm WS-WEATHER-DATA bằng mệnh đề OCCURS.
Hiển thị gợi ý
Viết: 05 WS-NHIỆT ĐỘ PIC 9(3)V9 XUẤT HIỆN 5 LẦN.
Giải pháp khả dụng sau 3 lần thử
Khởi tạo ba phần tử đầu tiên của bảng WS-MONTHLY-SALES với các giá trị lần lượt là 1200, 1500 và 1800 bằng cách sử dụng câu lệnh MOVE. Hãy nhớ rằng các chỉ mục COBOL bắt đầu từ 1.
Hiển thị gợi ý
Sử dụng MOVE 1200 ĐẾN WS-BÁN HÀNG HÀNG THÁNG(1). đối với phần tử đầu tiên, sau đó lặp lại cho phần tử thứ hai và thứ ba bằng cách sử dụng chỉ mục (2) và (3).
Giải pháp khả dụng sau 3 lần thử