# การใช้งาน Calling Instance Function ในภาษา COBOL อย่างมือโปร
COBOL ย่อมาจาก "Common Business-Oriented Language" เป็นหนึ่งในภาษาโปรแกรมที่เชี่ยวชาญสำหรับการใช้งานในโดเมนธุรกิจ ที่มีการใช้งานอยู่อย่างแพร่หลายโดยเฉพาะในระบบบริการทางการเงินและราชการ แม้จะมีอายุมากกว่า 60 ปี แต่ COBOL ยังคงเป็นภาษาที่ทรงพลังและมีทรัพยากรคนที่เชี่ยวชาญประจำการอยู่จำนวนไม่น้อย
ใน COBOL, เราไม่เรียกฟังก์ชันที่เราใช้งานว่า "instance function" เหมือนภาษาอื่น ๆ แต่เราจะใช้คำว่า "COBOL subprogram" หรือ "COBOL subroutine" เพื่ออ้างถึงโปรแกรมย่อยที่สามารถถูกเรียกใช้งานจากโปรแกรมหลัก หรือจากโปรแกรมย่อยอื่น ๆ ได้
การเรียกใช้ Subroutine ใน COBOL ทำได้โดยการใช้คำสั่ง `CALL` ซึ่งทำการโอนความคุมการทำงานไปยัง subroutine ที่ระบุ และเมื่อการทำงานของ subroutine นั้น ๆ เสร็จสมบูรณ์ การควบคุมจะถูกส่งคืนมายังโปรแกรมหลัก
ตัวอย่าง CODE ที่ 1: การเรียกใช้ Subroutine
IDENTIFICATION DIVISION.
PROGRAM-ID. MAINPROG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-FIRST-NUMBER PIC 9(4) VALUE 0.
01 WS-SECOND-NUMBER PIC 9(4) VALUE 0.
01 WS-RESULT PIC 9(4) VALUE 0.
PROCEDURE DIVISION.
MAIN-LOGIC.
MOVE 10 TO WS-FIRST-NUMBER.
MOVE 20 TO WS-SECOND-NUMBER.
CALL 'ADDSUB' USING WS-FIRST-NUMBER WS-SECOND-NUMBER WS-RESULT.
DISPLAY 'THE RESULT IS: ' WS-RESULT.
STOP RUN.
ADDSUB SECTION.
LINKAGE SECTION.
01 LS-FIRST-NUMBER PIC 9(4).
01 LS-SECOND-NUMBER PIC 9(4).
01 LS-RESULT PIC 9(4).
PROCEDURE DIVISION USING LS-FIRST-NUMBER LS-SECOND-NUMBER LS-RESULT.
ADD LS-FIRST-NUMBER LS-SECOND-NUMBER GIVING LS-RESULT.
EXIT PROGRAM.
ในตัวอย่างนี้, `MAINPROG` คือโปรแกรมหลักที่ใช้ `CALL 'ADDSUB'` สำหรับการเรียก subroutine `ADDSUB` ที่ทำหน้าที่บวกเลข โดยส่งค่าผ่าน `USING` ซึ่งจะต้องมี `LINKAGE SECTION` ใน `ADDSUB` เพื่อรับค่าที่ถูกส่งมา
ตัวอย่าง CODE ที่ 2: การจัดการข้อผิดพลาด
IDENTIFICATION DIVISION.
PROGRAM-ID. MATHPROG.
... [ตัดบางส่วนเพื่อความสั้น] ...
PROCEDURE DIVISION.
PERFORM CALCULATE-ADD UNTIL WS-FIRST-NUMBER > 100
CALL 'DIVSUB' USING WS-FIRST-NUMBER WS-SECOND-NUMBER WS-RESULT
ON EXCEPTION
DISPLAY 'AN ERROR OCCURRED IN DIVSUB.'
END-CALL.
... [ตัดบางส่วนเพื่อความสั้น] ...
DIVSUB SECTION.
... [รหัสสำหรับ DIVSUB หรือ subroutine การหาร] ...
ที่นี่, `MATHPROG` จะเรียกใช้ `DIVSUB` ซึ่งเป็น subroutine สำหรับการหาร และหากมีข้อผิดพลาดเกิดขึ้น มันจะแสดงข้อความ 'AN ERROR OCCURRED IN DIVSUB.'
ตัวอย่าง CODE ที่ 3: การส่งคืนค่าหลายค่า
IDENTIFICATION DIVISION.
PROGRAM-ID. REPORTGEN.
... [ตัดบางส่วนเพื่อความสั้น] ...
PROCEDURE DIVISION.
CALL 'GETREPORT' USING WS-START-DATE WS-END-DATE WS-REPORT-OUT
DISPLAY WS-REPORT-OUT.
... [ตัดบางส่วนเพื่อความสั้น] ...
GETREPORT SECTION.
... [รหัสสำหรับ GETREPORT หรือ subroutine ที่สร้างรายงาน] ...
ในที่นี้, `REPORTGEN` เรียกใช้ `GETREPORT` เพื่อให้รับรายงานในช่วงเวลาหนึ่ง และแสดงที่โอบล๊อก 'DISPLAY'
ในธุรกิจธนาคาร, มักจะมีการใช้โปรแกรม COBOL สำหรับการคำนวณดอกเบี้ย, การสร้างรายงานบัญชี, หรือการตรวจสอบการทำรายการต่าง ๆ เช่น การโอนเงินและการชำระหนี้
การทำซอฟต์แวร์เหล่านี้โดยใช้ COBOL ย่อมแสดงให้เห็นถึงคุณค่าของการมีสัจจะที่กว้างในการจัดการกับธุรกรรมขนาดใหญ่ที่ต้องการความน่าเชื่อถือสูงและการทำงานแม่นยำ
การเรียนรู้ COBOL เป็นมรดกทางการเขียนโปรแกรมที่ไม่ควรมองข้าม โดยเฉพาะหากคุณต้องการทำงานในสายอุตสาหกรรมที่ยังคงพึ่งพาระบบเก่าแก่แต่ทรงพลังนี้ เชิญทุกท่านที่สนใจเริ่มต้นหรือขยายความรู้ด้านการเขียนโปรแกรมเข้าร่วมที่โรงเรียนการเขียนโปรแกรม EPT ที่นี่เรามีคอร์สสอน COBOL พร้อมสร้างนักพัฒนามืออาชีพที่พร้อมจะรับมือกับการเปลี่ยนแปลงของโลก IT ที่สมบูรณ์ทั้งในทฤษฎีและปฏิบัติ – มาร่วมกันเติบโตและสร้างโอกาสกับเราที่ EPT วันนี้!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: cobol calling_instance_function subroutine programming_language business-oriented_language financial_services subprogram linkage_section programming_logic error_handling data_division procedure_division software_development legacy_systems it_industry
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM