ภาษา Cobol

posted on 04 Jul 2011 12:42 by sakdanon
1. ความรู้เบื้องต้น
ภาษา COBOL คืออะไร
ภาษาโคบอล (COBOL : Common Business Oriented Language) คือภาษาคอมพิวเตอร์สำหรับใช้ในงานธุรกิจภาษาแรกของโลก พัฒนาในปีค.ศ. 1962 โดยคณะกรรมการโคดาซิล (The Conference on Data Systems Languages - CODASYL) มีจุดเด่นคือ สามารถใช้งานแฟ้มข้อมูลได้หลายแบบ กำหนดโครงสร้างข้อมูลได้สะดวก มีลักษณะการเขียนโปรแกรม แบบเอกสารอธิบายโปรแกรม ช่วยให้นักพัฒนารุ่นถัดไปเข้าใจได้ง่าย
การเขียนโปรแกรมภาษา COBOL เป็นภาษาที่ง่ายมากภาษาหนึ่ง เพราะไม่มีลูกเล่นให้ใช้มาก ๆ เหมือนพวก VB, C, Pascal หรือ dBase หน้าที่หลักของ COBOL คืออ่านข้อมูลจากแฟ้มมาประมวลผลทางธุรกิจเป็นหลัก สำหรับ ผู้เรียนมือใหม่ อาจบอกว่าภาษานี้ยาก เพราะพวกเขาอาจไปยึดติดกับการจดจำ division ต่าง ๆ ว่ามีอะไรบ้าง ซึ่งสิ่งเหล่านั้นเป็นเพียงหน้ากาก มิใช่ concept ของภาษา ถ้ามีคู่มือสักเล่ม ก็จะเข้าใจ และแกะหน้ากากเหล่านั้นออกได้ แล้วก้าวให้ลึกเข้าไปสู่ตัวภาษาได้โดยง่าย
โดยพื้นฐานแล้ว COBOL ประกอบด้วย 4 Division และตำแหน่งแรกต้องเริ่มต้นที่ 8 ส่วนคำสั่งเริ่มหลักที่ 12 สำหรับตัวแปลภาษา COBOL รุ่นใหม่ไม่จำเป็นต้องมี 3 division แรกได้
COBOL was one of the earliest high-level programming languages. It was developed in 1959 by a group of computer professionals called the Conference on Data Systems Languages (CODASYL). Since 1959 it has undergone several modifications and improvements. In an attempt to overcome the problem of incompatibility between different versions of COBOL, the American National Standards Institute (ANSI) developed a standard form of the language in 1968. This version was known as American National Standard (ANS) COBOL. In 1974, ANSI published a revised version of (ANS) COBOL, containing a number of features that were not in the 1968 version. In 1985, ANSI published still another revised version that had new features not in the 1974 standard. The language continues to evolve today. Object-oriented COBOL is a subset of COBOL 97, which is the fourth edition in the continuing evolution of ANSI/ISO standard COBOL. COBOL 97 includes conventional improvements as well as object-oriented features. Like the C++ programming language, object-oriented COBOL compilers are available even as the language moves toward standardization. [reference]
Division in COBOL
1. identification division.
2. environment division.
3. data division.
4. procedure division.

Course outline
1. Course introduction
2. Principle of COBOL language
3. Language structuring
4. Command
5. Sequential processing
6. Decision processing
7. Repeating processing Midterm examination
8. Sequential file access
9. Index file access Final examination
Case study : Sell system
- sellpro.cbl
- product.txt
- sell.txt

ปรับปรุงตาม
หลักสูตรใหม่
ศูนย์ตำรา อาจารย์นิมิตร จิวะสันติการ
391/1-5 ซอยพัฒนาการ 30 ถนนพัฒนาการ
แขวง/เขตสวนหลวง กรุงเทพฯ 10250
Tel.0-2319-4948 Ext.121 หรือ Tel.0-2719-4075 Ext.121
e-mail: nine@lox1.loxinfo.co.th
ฝ่ายวิชาการ : กาญจนา มงคล Tel.08-6327-9409
คำอธิบายรายวิชา (คำนำ)
ศึกษาโครงสร้างของภาษาโคบอล องค์ประกอบและคำสั่งต่าง ๆ การใช้ภาษาโคบอลในทางธุรกิจ ศึกษาถึงการเขียนโปรแกรม โดยสามารถเขียนและทดสอบโปรแกรมนี้อย่างน้อย 10 โปรแกรม
การเขียนโปรแกรมภาษาโคบอล
(COBOL Programming)

ตรงตามหลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง(ปวส.) กระทรวงศึกษาธิการ
พ.ศ.2540 รหัส 3204-2110 กรมอาชีวศึกษา
พ.ศ.2536 รหัส 05-540-203 สถาบันเทคโนโลยีราชมงคล

เรียบเรียงโดย ผศ.บุรินทร์ รุจจนพันธุ์
2. สารบัญของหนังสือ
  •  
      1.1 ความหมายของโคบอล
      1.2 ข้อดี และข้อเสีย
      1.3 ขั้นตอนการพัฒนาโปรแกรม
      1.4 การทำงานของภาษาที่มีโครงสร้าง
      1.5 โครงสร้างโปรแกรมภาษาโคบอล
      download : สรุปท้ายบท และแบบฝึกหัด
      3.1 ประเภทของคำสั่ง (Types of statements)
      3.2 คำสั่งที่ใช้ในการคำนวณ (Arithmetic)
      3.3 คำสั่งที่ใช้เคลื่อนย้าย (Data manipulation)
      3.4 คำสั่งที่ใช้ควบคุมขั้นตอน (Procedure branching)
      3.5 คำสั่งที่ใช้รับ และแสดงผล (Input/Output)
      download : สรุปท้ายบท และแบบฝึกหัด
      4.1 การทำงานกับคำสั่งแสดงผล
      4.2 การทำงานกับคำสั่งคำนวณ
      4.3 การตกแต่งผลลัพธ์ก่อนนำไปแสดง
      4.4 Redifines และ Renames
      4.5 การกำหนดตัวแปรอาเรย์ และนำมาใช้
      download : สรุปท้ายบท และแบบฝึกหัด
  • บทที่ 1 :: หลักการเบื้องต้นของภาษา บทที่ 2 :: โครงสร้างของภาษา บทที่ 3 :: คำสั่ง บทที่ 4 :: การทำงานแบบตามลำดับ
    บทที่ 5 :: การทำงานแบบมีเงื่อนไข
      5.1 เงื่อนไข (Conditions)
      5.2 ทดสอบความสัมพันธ์ (Relation conditions)
      5.3 ทดสอบเป็นชุด (Nested conditions)
      5.4 ทดสอบประเภทของข้อมูล (Class conditions)
      5.5 ทดสอบเครื่องหมาย (Sign conditions)
      5.6 ทดสอบชื่อเงื่อนไข (Condition-name conditions)
      5.7 ทดสอบที่ซับซ้อน (Complex conditions)
      download : สรุปท้ายบท และแบบฝึกหัด
    บทที่ 6 :: การทำงานแบบวนซ้ำ
      6.1 การเรียก Paragraph มาทำงาน
      6.2 การทำซ้ำด้วยคำสั่ง Go to
      6.3 การกำหนดจำนวนครั้งที่ทำซ้ำ
      6.4 การทำซ้ำจนกระทั่งเงื่อนไขเป็นจริง
      6.5 การทำซ้ำ โดยนำตัวเลขระบุรอบไปใช้งาน
      6.6 การทำซ้ำ กับตัวแปรอาเรย์ (array)
      6.7 การทำซ้ำ กับการเขียนโปรแกรมเมนู
      download : สรุปท้ายบท และแบบฝึกหัด
    บทที่ 7 :: การเข้าถึงแฟ้มแบบตามลำดับ
      7.1 การจัดเก็บข้อมูลในแฟ้มแบบตามลำดับ
      7.2 การอ่านข้อมูลมาประมวลผล และแสดงผล
      7.3 การสร้างแฟ้มข้อมูล
      7.4 การเพิ่มระเบียน
      7.5 การปรับปรุงแฟ้ม
      7.6 การจัดเรียงระเบียนใหม่
      7.7 การขอปรับปรุงข้อมูลจากแฟ้มข้อมูลย่อย
      download : สรุปท้ายบท และแบบฝึกหัด
    บทที่ 8 :: การเข้าถึงแฟ้มแบบดัชนี
      8.1 การสร้างแฟ้มแบบดัชนี
      8.2 การอ่านข้อมูลมาประมวล และแสดงผล
      8.3 การค้นหาระเบียนที่ต้องการ
      8.4 การเพิ่มระเบียน
      8.5 การลบระเบียน
      8.6 การแก้ไขระเบียน
      download : สรุปท้ายบท และแบบฝึกหัด

3. วิธีแปล COBOL 4.5
เตรียมตัวแปลภาษา
ดาวน์โหลด จาก http://www.thaiabc.com/download/cobol3.zip
คัดลอกโปรแกรมไว้ในห้อง c:\cobol ผลการคัดลอกจะมีห้อง(Folder) 8 ห้อง
คือ Binb, Binr, Demo, Docs, Help, Init, Lib, Source
การใช้งานใน DOS
- คลิ๊ก Start, Run แล้วพิมพ์ CMD แล้วพิมพ์ cd\cobol
- พิมพ์ Doskey เพื่อจะได้ใช้ลูกศร ขึ้น - ลง เรียกคำสั่งเก่าได้ง่าย
- สั่งกำหนดค่าเริ่มต้น ด้วยการพิมพ์ c:\cobol\binr\new-vars.bat ใน DOS Prompt
- cd c:\cobol เข้าห้องนี้ เพื่อเตรียมทดสอบสร้าง และแปลโปรแกรม
- พิมพ์ edit test.cbl
พิมพ์คำว่า procedure division. โดยอักษร p เริ่มหลัก หรือ col หรือ column ที่ 8
พิมพ์คำว่า display 5. โดยอักษร d เริ่มหลัก หรือ col หรือ column ที่ 12
ออกจากโปรแกรม edit ด้วยการกด Alt+F, X, Y
- ทดสอบ 1)แปล 2)ลิงค์ และ 3)ประมวลผล โปรแกรมชื่อ test.cbl ในห้อง c:\cobol
C:\cobol>cobol test,test,test,nul
C:\cobol>link test,test,nul,,nul
C:\cobol>test
ทดสอบกับ Index File
- มีปัญหาขณะประมวลผลกับแฟ้มแบบ Index มีข้อความว่าไม่พบ EXTFH
- source code เดียวกันทำงานได้บน 3.0 แต่มีปัญหากับ 4.5
FOR Cobol 4.5
C:\>c:\cobol\binr\new-vars.bat
C:\>cd c:\cobol
C:\cobol>cobol test,test,test,nul
C:\cobol>link test,test,nul,,nul
C:\cobol>test
5
C:\cobol>

4. รหัสต้นฉบับ batch file CBL.BAT
    - ช่วยให้การ compile link และประมวลผล ทำได้ง่ายและเร็ว
    - สำหรับ COBOL compiler version 3.0 หรือ 4.5
    - เมื่อเขียนโปรแกรม x.cbl เสร็จและต้องการแปล ให้พิมพ์ว่า C:\COBOL>CBL x
    คำสั่งที่ใช้แปลโปรแกรมโดยปกติ คือ C:\COBOL>cobol x,x,x,nul
    เมื่อแปลจนได้ obj ก็จะสั่ง link คือ C:\COBOL>link x,x,nul,,nul
    เมื่อได้ x.exe ก็จะสั่งประมวลผล คือ C:\COBOL>x.exe หรือ C:\COBOL>x
@echo off
cls
if exist %1.obj  del %1.obj >nul
if exist %1.exe  del %1.exe >nul
echo Program is compiled.  Please,wait for the compilation.
echo
cobol %1,%1,%1,nul
if not exist %1.obj  goto end1
cls
echo Program is linked.  Please,wait for the linking.
link  %1,%1,nul,,nul
if not exist %1.exe  goto end
if     exist %1.obj  del %1.obj >nul
if     exist %1.lst  del %1.lst >nul
cls
%1
goto end
:end1
type %1.lst
echo Error on your source.
:end
echo

5. ตัวอย่างโปรแกรมอย่างง่าย
ตัวอย่าง 5.1 : การแสดงผลอย่างง่าย
:: ให้เขียนโปรแกรมพิมพ์เลข 5 บนจอภาพ
:: print number 5 on screen
    ใน COBOL รุ่นที่ผมใช้อยู่ไม่ต้องเขียนให้ครบทุก division ก็ compile แล้วสั่งประมวลผลได้
    อย่างลืมว่า procedure เริ่มหลักที่ 8 และ display เริ่มหลักที่ 12 เพราะเป็นกฎเหล็กของภาษา
    รหัสต้นฉบับ
    procedure division.
    
    display 5.

ตัวอย่าง 5.2 : ผ่าน หรือตก
:: รับค่าไปเปรียบเทียบ แล้วพิมพ์ pass หรือ fail
:: accept number and compare to display "pass" or "fail"
    รหัสต้นฉบับ
    working-storage section.
    01 s   pic 99.
    procedure division.
    
    accept s.
    if s > 50 display "pass".
    if s <= 50 display "fail".
    stop run.
    working-storage section. 01 s pic 99. procedure division.
    accept s.
    if s > 50
      display "pass"
    else
      display "fail".