RPG Programming
RPG Programming
- RPG Programming
- Purpose of the language
- คำสั่ง CL ที่จะได้เรียนจากบทนี้
- ตัวอักษร
- ลำดับของฟอร์ม
- Indicators
- Structured programming
- Operation Codes
- Arithmetic Operations
- Array Operations
- Branching Operations
- Call Operations
- Compare Operations
- Data-Area Operations
- Declarative Operations
- File Operations
- CHAIN (Random Retrieval from a File)
- CLOSE (Close Files)
- DELETE (Delete Record)
- EXCEPT (Calculation Time Output)
- EXFMT (Write/Then Read Format)
- OPEN (Open File for Processing)
- READ (Read a Record)
- READC (Read Next Changed Record)
- READE (Read Equal Key)
- READP (Read Prior Record)
- READPE (Read Prior Equal)
- SETGT (Set Greater Than)
- SETLL (Set Lower Limit)
- UNLOCK (Unlock a Data Area or Release a Record)
- UPDATE (Modify Existing Record)
- WRITE (Create New Records)
- Indicator-Setting Operations
- Initialization Operations
- Message Operations
- Move Operations
- String Operations
- Subroutine Operations
- Other Operations
- Display screens
- Data Files
- Practices
Purpose of the language
ภาษา RPG ออกแบบมาเพื่อการพัฒนาโปรแกรมใช้ในเชิงธุรกิจ และตัว AS/400 อยู่บนระบบปฏิบัติการ OS/400
คำสั่ง CL ที่จะได้เรียนจากบทนี้
Command | Task | Description |
---|---|---|
WRKMBRPDM | Work with Members | เข้าไปยังลิสต์ของ Member ใน Source file |
STRSEU | Source code editing | Start Source Entry Utility |
STRSDA | Screen display | Screen Design Aid |
CALL program-name | เรียกโปรแกรม | ใช้เรียกโปรแกรมอ็อบเจ็กต์ |
CRTDSPF | Display file | สร้างคอมไพล์ Display file |
CRTRPGPGM | การคอมไพล์โปรแกรม | สร้างคอมไพล์โปรแกรม RPG |
ตัวอักษร
- The letters
A-Z
- The numbers
0-9
- The characters
+ - * , . ' & / $ # : @
- The blank
ลำดับของฟอร์ม
Specification | Describe |
---|---|
H : Control | ใช้สำหรับกำหนด Config ต่าง ๆ ให้กับโปรแกรม |
F : File Description | ใช้กำหนดเกี่ยวกับไฟล์ |
E : Extension | ใช้ประกาศอาร์เรย์ และตาราง |
L : Line Counter | ใช้กำหนดความยาวของ บรรทัด Overflow |
I : Input | ใช้กำหนด Data structure, constant, records และ field |
C : Calculation | ใช้ทำดำเนินการคำสั่งต่าง ๆ |
O : Output | ใช้สำหรับแสดงผลเป็นแบบ spool file |
**: File Translation records | |
**: Alternate collation sequence records | |
**: Compile-time array and table data |
Indicators
Indicators เก็บค่าตัวอักษร ‘0’ และ ‘1’ โดยใช้เป็นตัวกำกับว่า เปิด หรือ ปิด
- MR, 1P, KA-KN และ KP-KY จะไม่สามารถใช้คำสั่ง
SETON
บังคับได้ - MR และ 1P จะไม่สามารใช้คำสั่ง
SETOFF
บังคับได้
Structured programming
XXXX
Sequential programming
ชุดคำสั่งที่ทำงานต่อกัน
Conditional branching
-
If Else
ตัวอย่าง สร้างเงื่อนไขเช็คตัวแปร
CENTR
ว่าใช่'Y'
หรือ'N'
หรือไม่ ถ้าใช่ให้เซ็ต'0'
ให้กับตัวแปรIN52
ถ้าไม่ใช่ให้เซ็ต'1'
ให้กับตัวแปรIN52
Ex. javascript
const CENTR = '' let IN52 = '0' if (CENTR == 'Y' or CENTR == 'N'){ IN52 = '0' }else{ IN52 = '1' }
-
Select When Other
- CASxx
- GOTO
-
CABxx
xx สามารถเป็นได้ดังนี้
อักษร ความหมาย GT X1 > X2 LT X1 < X2 EQ X1 == X2 NE X1 != X2 GE X1 >= X2 LE X1 <= X2
-
Repeatting an operation based on a certain condition
-
Do
-
Do While
-
Do Until
-
Operation Codes
Arithmetic Operations
- ADD (Add)
- DIV (Divide)
- MULT (Multiply)
- MVR (Move Remainder)
- SQRT (Square Root)
- SUB (Subtract)
- XFOOT (Summing the Elements of an Array)
- Z-ADD (Zero and Add)
- Z-SUB (Zero and Subtract)
ADD
DIV
MULT
MVR
SQRT
SUB
XFOOT
Z-ADD
Z-SUB
Array Operations
- LOOKUP (Look Up a Table or Array Element)
- MOVEA (Move Array)
- SORTA (Sort an Array)
- XFOOT (Summing the Elements of an Array)
LOOKUP
คำสั่ง LOOKUP ใช้ค้นหาค่าของ Factor 1 ใน Factor 2 โดยที่ Factor 2 เป็น Array หรือ Table
Indicators จะใช้กำหนดไว้เพื่อบอกผลการค้นหาและ เปิด Indicator ได้ไม่เกิน 2 คัว
Indicator High (HI): On ถ้าตัวค้นหา (Factor 1) มีใน Array และมีตัวที่มากกว่าอยู่ถัดไป
Ex. Data [A B C C C D E] หา B ดังนั้น C ตัวแรกคือตัวที่ทำให้ HI On
Data [E D C C C B A] หา B ดังนั้น C
Indicator Low (LO): On ถ้าตัวค้นหา (Factor 1) มีใน Array และมีตัวที่น้อยกว่าอยู่ถัดไป
Equal (EQ): เจอข้อมูล
MOVEA
SORTA
XFOOT
Branching Operations
CABxx
GOTO
ITER
LEAVE
TAG
Call Operations
- CALL (Call a Program)
- PARM (Identify Parameters)
- PLIST (Identify a Parameter List)
- RETURN (Return to Caller)
CALL
PARM
PLIST
RETURN
Compare Operations
- ANDxx (And)
- COMP (Compare)
- CABxx (Compare and Branch)
- CASxx (Conditionally Invoke Subroutine)
- DOUxx (Do Until)
- DOWxx (Do While)
- IFxx (If)
- ORxx (Or)
- WHENxx (When true then select)
ANDxx (And)
COMP (Compare)
CABxx (Compare and Branch)
CASxx (Conditionally Invoke Subroutine)
DOUxx (Do Until)
DOWxx (Do While)
IFxx (If)
![Opcode ifxx]/assets/images/rpg/./assets/images/rpg/OP_CODE_IFXX.png)
ORxx (Or)
WHENxx (When true then select)
โดยที่ xx หมายถึง
xx สามารถเป็นได้ดังนี้
อักษร | ความหมาย |
---|---|
GT | X1 > X2 |
LT | X1 < X2 |
EQ | X1 == X2 |
NE | X1 != X2 |
GE | X1 >= X2 |
LE | X1 <= X2 |
Blanks | การทำงานแบบไม่มีเงื่อนไข เช่น CAS, CAB |
Data-Area Operations
IN (Retrieve a Data Area)
OUT (Write a Data Area)
UNLOCK (Unlock a Data Area or Release a Record)
Declarative Operations
- DEFINE (Field Definition)
- KFLD (Define Parts of a Key)
- KLIST (Define a Composite Key)
- PARM (Identify Parameters)
- PLIST (Identify a Parameter List)
- TAG (tag)
DEFINE (Field Definition)
KFLD (Define Parts of a Key)
KLIST (Define a Composite Key)
PARM (Identify Parameters)
PLIST (Identify a Parameter List)
TAG (tag)
File Operations
- CHAIN (Random Retrieval from a File)
- CLOSE (Close Files)
- DELETE (Delete Record)
- EXCEPT (Calculation Time Output)
- EXFMT (Write/Then Read Format)
- OPEN (Open File for Processing)
- READ (Read a Record)
- READC (Read Next Changed Record)
- READE (Read Equal Key)
- READP (Read Prior Record)
- READPE (Read Prior Equal)
- SETGT (Set Greater Than)
- SETLL (Set Lower Limit)
- UNLOCK (Unlock a Data Area or Release a Record)
- UPDATE (Modify Existing Record)
- WRITE (Create New Records)
CHAIN (Random Retrieval from a File)
CLOSE (Close Files)
DELETE (Delete Record)
EXCEPT (Calculation Time Output)
EXFMT (Write/Then Read Format)
OPEN (Open File for Processing)
READ (Read a Record)
READC (Read Next Changed Record)
READE (Read Equal Key)
READP (Read Prior Record)
READPE (Read Prior Equal)
SETGT (Set Greater Than)
SETLL (Set Lower Limit)
UNLOCK (Unlock a Data Area or Release a Record)
UPDATE (Modify Existing Record)
WRITE (Create New Records)
Indicator-Setting Operations
SETOFF (Set Indicator Off)
SETON (Set Indicator On)
Initialization Operations
CLEAR (Clear)
Message Operations
DSPLY (Display Function)
Move Operations
MOVE (Move)
MOVEA (Move Array)
MOVEL (Move Left)
String Operations
- CAT (Concatenate Two String)
- CHECK (Check Caracters)
- CHECKR (Check Reverse)
- SCAN (Scan String)
- SUBST (Substring)
CAT (Concatenate Two String)
CHECK (Check Caracters)
CHECKR (Check Reverse)
SCAN (Scan String)
SUBST (Substring)
Subroutine Operations
- BEGSR (Beginning of Subroutine)
- ENDSR (End of Subroutine)
- EXSR (Invoke Subroutine)
- CASxx (Conditionally Invoke Subroutine)
BEGSR (Beginning of Subroutine)
ENDSR (End of Subroutine)
EXSR (Invoke Subroutine)
CASxx (Conditionally Invoke Subroutine)
Other Operations
- ELSE (Else)
- ENDyy (End a Structure Group)
- LEAVE (Leave a Do/For Group)
- OTHER (Otherwise Select)
โดย yy สามารถเป็นได้ดังนี้
อักษร | ความหมาย |
---|---|
CS | End CASxx |
DO | End DO, DOU, DOW |
FOR | End FOR |
IF | End IF |
SL | End SELECT |
Blanks | End ให้กับ Structure operation ใด ๆ |
Display screens
Display screen หรือหน้าจอใช้สำหรับเป็น UI ในการใช้งาน AS/400 โดย Screen เราจะสร้าง ไฟล์ไว้ใน [LIB]/QDDSSRC
วิธีสร้าง Screen สามารถทำได้โดย
- กด create (F6) บนหน้า
WRKMBRPDM
- ใช้ CL command
STRSDA
Data Files
Data files หรือไฟล์ใช้เก็บข้อมูล
ประเภทของ Data files
- Physical file
Physical file เป็นไฟล์ที่ใช้เก็บข้อมูล และตัวไฟล์ยังใช้กำกับรูปแบบของข้อมูลด้วยว่าเป็นประเภทอะไร มีขนาดเท่าไร
Physical file สามารถมี Record format ได้แค่ 1 ตัวต่อหนึ่ง Physical file เท่านั้
Physical file สามารถกำหนดคีย์ให้ได้
- Logical file
Logical file ไม่ได้เก็บข้อมูล
Logical file เป็น View คอยเลือกเอา Field ที่ต้องการจาก Physical file นำไปใช้ต่อไป
Logical file สามารถกำหนดคีย์ให้ได้
วิธีสร้าง Data files ทำได้โดยใช้คำสั่ง STRSEU
หรือ กด F6
บน WRKMBRPDM