บทเรียนนี้จะเป็นรูปแบบการเขียนโปรแกรมภาษา COBOL การแสดงผลข้อมูลจากตัวแปร โดยแบ่งการรับค่าแสดงผลตาม DataType ต่างๆ
จากตัวอย่างบทเรียนก่อนจะเป็นการทำงานเบื้องต้น และการ Compile โปรแกรม
การแสดงผลรับค่าข้อมูลนั้น ภาษา COBOL จะใช้รูปแบบการรับค่าดังนี้ ใต้การประกาศ PROGRAM-ID
DATA DIVISION. WORKING-STORAGE SECTION. 01 SW-NAME PIC A(30). 01 SW-ID PIC 9(5) VALUE '600368'.
COBOL มีการประกาศแบบใช้ Picture Clause (PIC) เป็นการ Define ตัวแปรเป็นหลัก โดย PIC จะเป็นเหมือน regularExpression พิเศษที่รู้ว่าอะไรคือ DataType, Length, Sign และ Decimal and Position
โดยรูปแบบการใช้ Data Type นั้นจะเห็นว่า PIC A(30) คืออะไร ซึ่งจริงๆ A มาจากคำว่า Alphabetic หรือตัวอักษรที่มีความยาว 30 ตัวเก็บในตัวแปรชื่อ SW-NAME ส่วน ตัวแปร SW-ID นั้นคือการเก็บค่าตัวเลข 600368 ซึ่งน่าจะเป็นรหัสไว้ในรูปแบบ PIC 9(5) ใน Syntax ของ COBOL นั้น 9 ไม่ใช่ตัวเลขครับแต่เป็น Numeric หรือเลขจำนวนเต็ม
รูปแบบตามตารางปรากฏดังนี้
Symbol | Description |
---|---|
9 | Numeric เลขจำนวนเต็ม |
A | Alphabetic ตัวอักษร |
X | Alphanumeric อักขระอักษรเลข อักขระที่รวมทั้งตัวอักษรภาษาอังกฤษ A-Z ตัวเลข 0-9 |
V | Implicit Decimal จุดทศนิยมคั่นภายใน |
S | Sign เครื่องหมายต่างๆ เช่น +,- และอาจจะเป็น . |
P | Assumed Decimal เลขทศนิยม |
ดังนั้นพิจารณาส่วนของ Code นี้
DATA DIVISION. WORKING-STORAGE SECTION. 01 SW-NAME PIC A(30). 01 SW-ID PIC 9(5) VALUE '600368'.
เราจะเห็นว่า SW-NAME อาจจะเป็น String อะไรก็ได้ที่มีความยาว 30 ตัวอักษร และ SW-ID คือ ตัวเลขจำนวนเต็มจำนวน 5 ตัว (ในตัวอย่างใส่ไป 6 หลัก) ทีนี้ให้เราแสดงผล ค่าต่างๆ เมื่อเปิดโปรแกรม
PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 'Banyapon Poolsawas' TO SW-NAME. DISPLAY "My Name : "SW-NAME. DISPLAY "My Identity : "SW-ID.
ส่วนการแสดงผลนั้นเริ่มที่ สร้าง String ชือผมขึ้นมา Banyapon Poolsawas ไปเก็บไว้นตัวแปล SW-NAME
A000-FIRST-PARA. MOVE 'Banyapon Poolsawas' TO SW-NAME.
ส่วน SW-ID นั้นมีการประกาศแต่แรกแล้วใน DATA DIVISION ดังนั้นค่าตัวแปรจะตามมาประมวลผลได้ทันทีในส่วนของ PROCEDURE DIVISION มาลอง Compile กันดู
Code ตัวเต็มๆคือเราต้องประกาศ 3 ส่วน ได้แก่ IDENTIFICATION DIVISION เพื่อบอกว่าโปรแกรมของเราคือโปรแกรมอะไร
IDENTIFICATION DIVISION. PROGRAM-ID. TUTORIAL2.
ตั้งชื่อว่า TUTORIAL2
หลังจากนั้นก็ส่วนของ DATA DIVISION และ PROCEDURE DIVISION พร้อม STOP RUN ตัวชุดคำสั่ง จะได้ไฟล์ตามนี้
IDENTIFICATION DIVISION. PROGRAM-ID. TUTORIAL2. DATA DIVISION. WORKING-STORAGE SECTION. 01 SW-NAME PIC A(30). 01 SW-ID PIC 9(5) VALUE '600368'. PROCEDURE DIVISION. A000-FIRST-PARA. DISPLAY 'DAYDEV CO.,LTD.'. MOVE 'Banyapon Poolsawas' TO SW-NAME. DISPLAY "My Name : "SW-NAME. DISPLAY "My Identity : "SW-ID. STOP RUN.
เปิด Terminal มา Compile ตัวโปรแกรม COBOL ของเรา
cobc -x tutorial2.cob
จะได้ไฟล์มาแล้ว เปิดเลย
จะเห็นว่าการทำงานของมัน ถูกต้อง โดยเฉพาะส่วนของ SW-ID ที่ปรากฏมาแค่ 5 หลักทั้งที่ข้อมูลมี 6 หลัก
เราสามารถทดสอบรูปแบบการแสดงผลของ PIC บน DataType ต่างๆ ได้เพิ่มเติม ลองสร้าง ไฟล์ .cob มาใหม่ตั้งชื่อว่า tutorial3.cob แล้วใช้รูปแบบการประกาศ PIC แบบนี้
IDENTIFICATION DIVISION. PROGRAM-ID. TUTORIAL3. DATA DIVISION. WORKING-STORAGE SECTION. 01 SW-NUM1 PIC S9(3)V9(2). 01 SW-NUM2 PIC PPP999. 01 SW-NUM3 PIC S9(3)V9(2) VALUE -123.45. 01 SW-NUM4 PIC S9(3)V9(3) VALUE +123.456. 01 SW-NAME PIC A(6) VALUE 'DAYDEV'. 01 SW-ID PIC X(5) VALUE '$125M'. PROCEDURE DIVISION. DISPLAY "SW-NUM1 : "SW-NUM1. DISPLAY "SW-NUM2 : "SW-NUM2. DISPLAY "SW-NUM3 : "SW-NUM3. DISPLAY "SW-NUM4 : "SW-NUM4. DISPLAY "SW-NAME : "SW-NAME. DISPLAY "SW-ID : "SW-ID. STOP RUN.
สังเกตหลังจาก Compile ให้ดีครับ
01 SW-NUM1 PIC S9(3)V9(2).
ตัวแปร SW-NUM1 จะเป็นค่า S คือเครื่องหมาย +,- ส่วนมากเป็น + จำนวน 3 หลัก คั่นด้วยทศนิยม (v) ที่เป็น เลขจำนวนเต็ม (9) เลยประกาศ V9 โดยมีจำนวน 2 หลัก ประกาศว่า V9(2)
ส่วน SW-NUM3 และ SW-NUM4 จะเป็น S9(3)V9(2) สามารถกำหนดค่าเริ่มต้น S เป็น – ได้เลยใน DATA DIVISION และตามด้วย V9 จำนวนทศนิยมเป็นตัวเลข 2 ตำแหน่ง ส่วน SW-NUM4 นั้น S เป็น + และมีทศนิยท V9(3) เป็นเลขจำนวนเต็ม 3 หลัก
ตัวแปร SW-ID เป็น X(5) คือเป็นอักขระ ตัวอักษร ตัวเลข และ เครื่องหมาย ใดๆ ที่มีความยาว 5 ตัว ก็ใส่ X(5)
ทำการ Compile โปรแกรม
cobc -x tutorial3.cob
ผลที่ได้คือ
จะเห็นว่า COBOL นั้นจะต้องใส่ใจเรื่องของการ DEFINE เป็นหลักก่อนจะทำการประมวลผลครับ