สรุปโครงสร้างโปรแกรม
ภาพรวมทั้งหมดของ COA.4gl — โครงสร้าง, ตาราง, และ Keywords
สรุปเส้นทางการเปลี่ยนผ่าน (Modernization Journey)
1. อ่านโค้ด 4GL ให้ทะลุ
ทำความเข้าใจโครงสร้างหลัก แยกส่วนที่เป็น Data Query ออกจากการจัดรูปแบบใน Report (BRP)
ดูซอร์สโค้ดเต็ม2. สกัด Business Logic
รวบรวมวิธีจัดรูปแบบตัวเลข สูตรคำนวณ Spec และ Fallback ต่างๆ ออกจากชั้น View
ดูการวิเคราะห์ Logic3. สร้าง SQL View
เปลี่ยนเทคนิค "อ่านข้อมูลซ้อนลูป" ให้เป็นการ JOIN และ LEFT JOIN ดึงข้อมูลชิ้นเดียวจากฐานข้อมูล
ดูคำสั่ง SQL4. ปลายทาง 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()
ตรวจว่าค่าเป็นค่าว่างหรือไม่