สรุปโครงสร้างโปรแกรม

ภาพรวมทั้งหมดของ COA.4gl — โครงสร้าง, ตาราง, และ Keywords

สรุปเส้นทางการเปลี่ยนผ่าน (Modernization Journey)

1. อ่านโค้ด 4GL ให้ทะลุ

ทำความเข้าใจโครงสร้างหลัก แยกส่วนที่เป็น Data Query ออกจากการจัดรูปแบบใน Report (BRP)

ดูซอร์สโค้ดเต็ม
2. สกัด Business Logic

รวบรวมวิธีจัดรูปแบบตัวเลข สูตรคำนวณ Spec และ Fallback ต่างๆ ออกจากชั้น View

ดูการวิเคราะห์ Logic
3. สร้าง SQL View

เปลี่ยนเทคนิค "อ่านข้อมูลซ้อนลูป" ให้เป็นการ JOIN และ LEFT JOIN ดึงข้อมูลชิ้นเดียวจากฐานข้อมูล

ดูคำสั่ง SQL
4. ปลายทาง API

จัดการ Logic ซับซ้อนด้วย Backend (Python/Node) แล้วปล่อย JSON ตรงๆ ให้ Web/App นำไปใช้

ทดลองยิง API

สัดส่วนโค้ดตามส่วน

โครงสร้างโปรแกรม

Declaration บรรทัด 28-124
12%
Program Flow บรรทัด 126-172
6%
read.main.table() บรรทัด 178-644
58%
initial.label() บรรทัด 646-674
4%
convert.utc.to.date() บรรทัด 676-690
2%
convert.date.to.utc() บรรทัด 692-703
2%
get.remark() บรรทัด 706-768
8%
get.specification() บรรทัด 775-801
3%
Comments/History บรรทัด scattered
5%

ตารางแยกตามโมดูล

ตารางฐานข้อมูลที่ใช้ (17 ตาราง)

# ตาราง คำอธิบาย โมดูล
1 sccoa003 COA Header Quality
2 sccoa004 COA Details Quality
3 qmptc001 Characteristic Quality
4 qmptc014 Options Quality
5 qmptc015 QID-Characteristic Quality
6 qmptc100 Inspection Order Quality
7 tccom100 Business Partner Common
8 tccom130 Address Common
9 tccom001 Employee Common
10 tcibd001 Item General Item
11 tcibd004 Item Code System Item
12 tcmcs001 Unit Common
13 tcmcs007 Unit by Language Common
14 sccoa007 Source of Origin Quality
15 sccoa008 Spec by BP/Item Quality
16 sccoa009 Remark by Item/BP Quality
17 tdsls400 Sales Order Sales

Keywords & Syntax สำคัญ

select...selectdo...endselect

ลูปอ่านข้อมูลจากฐานข้อมูล

selectempty

ทำงานเมื่อ SELECT ไม่พบข้อมูล

selecteos

ทำงานเมื่อ SELECT จบ (End of Select)

extern domain

ประกาศตัวแปรที่ผูกกับ UI/Report

brp.open() / brp.ready() / brp.close()

เปิด/ส่งข้อมูล/ปิดรายงาน BRP

trim$() / strip$()

ตัดช่องว่างจากสตริง

edit$()

จัดรูปแบบตัวเลขเป็นสตริง

sprintf$()

จัดรูปแบบสตริง (คล้าย C)

text.to.buf()

อ่าน Text Note ไปเก็บใน array

import()

นำเข้าค่าจากหน้าจอก่อนหน้า

{:variable}

Host Variable ใน SQL

isspace()

ตรวจว่าค่าเป็นค่าว่างหรือไม่