Site logo

WORKING-STORAGE nâng cao trong COBOL – Hiểu rõ OCCURS và REDEFINES qua ví dụ thực tế

5:00 read

Vì sao phải học WORKING-STORAGE nâng cao (OCCURS & REDEFINES)?

Ở các bài trước, bạn đã:

  • Bài 002: hiểu level number, PIC, group item, numeric/string
  • Bài 006: quen với PERFORM VARYING – vòng lặp có biến đếm
  • Bài 007: làm việc với FILE SECTION và record 01 để đọc file tuần tự

Trong chương trình batch thực tế như RZZBSQLN1.PCO, WORKING-STORAGE không chỉ có vài biến lẻ 9(4) hay X(20) mà thường chứa:

  • Table (mảng 1 chiều) để lưu nhiều record tạm thời – dùng OCCURS
  • Struct "2 mặt" cho cùng một vùng nhớ – dùng REDEFINES để chia nhỏ date/time, phân tích record phức tạp, đổi format dữ liệu

Bài này tập trung vào hai công cụ rất mạnh (và cũng dễ gây bug nếu không hiểu kỹ):

  • OCCURS – khai báo table/mảng trong COBOL
  • REDEFINES – cho phép nhiều layout khác nhau cùng "chồng" lên một vùng nhớ

Chúng ta sẽ:

  • Xây dựng mental model tương đương với array/struct trong Java/Python
  • Phân tích các ví dụ thực tế lấy cảm hứng từ RZZBSQLN1 như WK_SQL_TBL, WK_PARM_TBL, SYS_DATE/SYS_DATE-R
  • Làm bài tập thiết kế table và layout date/time

Ôn lại: WORKING-STORAGE và level number

WORKING-STORAGE dùng để khai báo biến dùng suốt chương trình:

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 CUSTOMER.
          05 CUST-ID      PIC 9(5).
          05 CUST-NAME    PIC X(30).

       77 WS-COUNTER      PIC 9(5) VALUE 0.
  • 01 CUSTOMERrecord (group item) – giống một struct/class instance
  • 05 CUST-ID, 05 CUST-NAME là field con bên trong
  • 77 WS-COUNTER là biến đơn lẻ (không thuộc group)

Khi thêm OCCURSREDEFINES, bạn đang chuyển từ biến đơn sang cấu trúc dữ liệu phức tạp.


Yêu cầu đăng nhập

Vui lòng đăng nhập để truy cập nội dung này

Additional Resources

Course Guide

Comprehensive PDF guide with examples

GitHub Repository

Example code for all lessons

Discussion

Have a question about this lesson? Post it here and get answers from instructors and peers.