COBOL language

posted on 09 Jul 2011 13:59 by oilgengteuk

ภาษาโคบอล

(COBOL : Common Business Oriented Language)

คือภาษาคอมพิวเตอร์สำหรับใช้ในงานธุรกิจ

 ถูกสร้างขึ้นโดย Grace Murray Hopper ในปี 1959

 เธอเป็นนักวิทยาศาสตร์คอมพิวเตอร์หญิงรุ่นบุกเบิก โดยมีแนวคิดพื้นฐานว่าคอมพิวเตอร์ต่าง

ยี่ห้อควรทำงานได้จากโค้ดเดียวกันและสร้างมาตรฐานที่ชื่อว่า FLOW-MATIC ขึ้น

จากนั้นคณะกรรมการสร้างมาตรฐานการพัฒนาซอฟต์แวร์ของทหารเรือสหรัฐฯ
 จึงได้ปรับปรุงมาตรฐานนี้ขึ้นมาเป็นภาษา COBOL แต่การทำงานจริงนั้นต้องรอ
จนคอมไพล์เลอร์ออกมาในวันที่ 6 และ 7 ธันวาคมปี 1960 เมื่อเครื่องคอมพิวเตอร์
สองเครื่องจาก RCA และ Remington-Rand Univac สามารถทำงานด้วยซอฟต์แวร์
ชุดเดียวกันเป็นผลสำเร็จ
 
จุดเด่น
 
คือสามารถใช้งานแฟ้มข้อมูลได้หลายแบบ กำหนดโครงสร้างข้อมูลได้สะดวก
มีลักษณะการเขียนโปรแกรม แบบเอกสารอธิบายโปรแกรม
ช่วยให้นักพัฒนารุ่นถัดไปเข้าใจได้ง่าย
การเขียนโปรแกรมภาษา COBOL เป็นภาษาที่ง่ายมากภาษาหนึ่ง เพราะไม่มีลูกเล่นให้ใช้มาก ๆ เหมือนพวก VB, C, Pascal หรือ dBase
 

หน้าที่หลักของ COBOL
 
คืออ่านข้อมูลจากแฟ้มมาประมวลผลทางธุรกิจเป็นหลัก
สำหรับ ผู้เรียนมือใหม่ อาจบอกว่าภาษานี้ยาก เพราะพวกเขาอาจไปยึดติดกับ
การจดจำ division ต่าง ๆ ว่ามีอะไรบ้าง ซึ่งสิ่งเหล่านั้นเป็นเพียงหน้ากาก
มิใช่ concept ของภาษา ถ้ามีคู่มือสักเล่ม ก็จะเข้าใจ และแกะหน้ากากเหล่านั้นออกได้
แล้วก้าวให้ลึกเข้าไปสู่ตัวภาษาได้โดยง่าย

ข้อดีของภาษาโคบอล

1.เป็นภาษาที่เข้าใจง่าย เนื่องจากคำสั่งเป็นภาษาอังกฤษ
2.ใช้ได้กับเครื่องคอมพิวเตอร์ทุกประเภท
3.เหมาะกับงานข้อมูลที่ใช้ในงานประมวลผลทางธุรกิจ
4.มีรูปแบบการพิมพ์รายงาน
5.สามารถใช้ประมวลผลแฟ้มข้อมูลได้หลายแบบ ได้แก่แฟ้มลำดับ แฟ้มสุ่ม
แฟ้มลำดับเชิงดัชนีและแฟ้มที่มีหลายคีย์
6.ใช้เป็นเอกสารอ้างอิงประกอบโปรแกรมได้

ข้อเสียของภาษาโคบอล

1.ใช้คำในภาษาฟุ่มเฟือย ทำให้ตัวโปรแกรมค่อนข้างยาว
2.มีตัวแปลภาษาที่ใหญ่ กินเนื้อที่ในหน่วยความจำ
3.มี function การคำนวณน้อย

ในการเขียนโปรแกรมภาษาโคบอลเราจะแบ่งออกเป็นส่วน ๆ ดังนี้

1.ส่วนประกอบของโปรแกรม ภาษาโคบอล
2.สัญลักษณ์ ที่ใช้ในภาษาโคบอล
3.ประเภทของคำ
4.ตัวแปร และ ค่าคงที่
5.แบบฟอร์ม สำหรับการเขียนโปรแกรม COBOL (COBOL CODING FORM)
6.การใช้เครื่องหมายวรรคตอน

1.ส่วนประกอบของโปรแกรม COBOL

IDENTIFICATION DIVISION
- ชื่อโปรแกรม
- ชื่อผู้เขียนโปรแกรม
- วันที่เขียนโปรแกรม

ENVIRONMENT DIVISION
- รายละเอียดของตัวเครื่อง(CONFIGURATION SECTION)
- รายละเอียดสิ่งที่ใช้ในการบันทึกข้อมูล(INPUT/OUTPUT SECTION)

DATA DIVISION
- รายละเอียดของแฟ้มข้อมูล(FILE SECTION)
- รายละเอียดของข้อมูลอื่น ๆ(WORKING-STORAGE SECTION)
- รายละเอียดของข้อมูลที่รับมาจากโปรแกรมอื่น ๆ(LINKAGE SECTION)
- รายละเอียดของข้อมูลที่ให้แสดงบนจอภาพ

PROCEDURE DIVISION
- PARAGRAPH 1
- PARAGRAPH 2
- PARAGRAPH 3-------[STATEMENT I;I' = 1(N)1


ไดอะแกรมแสดง โครงสร้างโปรแกรมภาษาโคบอล จากไดอะแกรม ที่แสดงโครงสร้างของโปรแกรมภาษาโคบอลจะเห็นว่า ได้แบ่งตัวโปรแกรมออกเป็น 4 ส่วน ในแต่ละส่วนเราเรียกว่า Divisionในแต่ละ Division มีชื่อดังต่อไปนี้
- IDENTIFICATION DIVISION.
- ENVIRONMENT DIVISION.
- DATA DIVISION.
- PROCEDURE DIVISION

IDENTIFICATION DIVISION  เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดของตัวโปรแกรม ชื่อของผู้เขียนโปรแกรม วันที่เริ่มเขียนโปรแกรม วันที่แปลโปรแกรม(Compiler) และที่สำคัญบอกว่าโปรแกรมนี้ชื่ออะไร

ENVIRONMENT DIVISION เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดของตัวโปรแกรมเกี่ยวกับตัวเครื่องคอมพิวเตอร์ที่ใช้ในการเขียนโปรแกรม หรือสั่งให้โปรแกรมทำงาน และบอกให้ทราบชนิดของ Input/Output Devision ที่จะนำมาใช้กับโปรแกรมนี้

DATA DIVISION เป็น Division หรือส่วนที่ใช้ในการแสดงรายละเอียดลักษณะของข้อมูลทุก ๆ ตัวที่นำมาเกี่ยวข้องกันกับโปรแกรมนี้ทั้งหมด ไม่ว่าจะเป็นข้อมูลที่เป็ฯ Input หรือ Output หรือผลลัพธ์ที่เกิดจากการประมวลผล หรือผลลัพธ์จากการทำงานของโปรแกรมนี้ โดยจะแสดงโครงสร้างของข้อมูลอย่างละเอียด

PROCEDURE DIVISION เป็น Division หรือส่วนที่ใช้ลำดับขั้นตอนของการทำงาน หรือของการประมวลผลข้อมูลโดยโปรแกรมชุดนี้ และใน Division นี้เราจะเขียนขึ้นตามผังโปรแกรมที่เราได้เขียนขึ้นในขั้นตอนแรกก่อนลงมือเขียนโปรแกรมนี้ ภายใน Division นี้จะแตกต่างไปจาก 3 Division แรกที่ได้กล่าวมา โดยจะมีการคำนาณ หรือมีคำสั่งต่าง ๆ ที่สั่งให้เครื่องคอมพิวเตอร์ทำงาน เพื่อให้ได้ผลลัทธ์ออกมาตามที่เราต้องการ
               
นอกจากภาษาโคบอลได้ถูกจัดแบ่งออกเป็นส่วนใหญ่ ๆ (Division) แล้ว ภายในแต่ละ Division ยังถูกแบ่งออกเป็น Section ย่อย ๆ ได้อีก เช่น ภายใน Environment Division จะต้องมีอย่างน้อย 2 Section คือ Configuration Section และ Input-Output Section และภายใน Data Division จะมี File Section และ Working-Storage Section ส่วนภายใน Procedure Division จะมี Section เท่าไหร่ก็ได้ หรือภายในส่วนของ Identification Division ไม่มี Section อยู่เลย
นอกจากนี้ภายในแต่ละ Section จะมี Paragraph แตกย่อยลงไปอีก ซึ่ง Paragraph เป็นส่วนประกอบภายใน Section ในทุก Section และภายใน Section จะต้องมี Paragraph อย่างน้อย 1 Paragraph แต่ถ้าหากว่าภายใน Division ใดไม่ได้แบ่งส่วนประกอบออกเป็น Section ให้ถือว่า Paragraph นั้นเป็นส่วนประกอบโดยตรงของภายใน Division นั้น
               
Sentence เป็นรูปของประโยคภายในของถาษาโคบอล ซึ่งมีลักษณะคล้ายกับประโยคภายในภาษาอังกฤษ ซึ่งภายในประโยค หรือ Sentence นี้ต้องมีคำกริยา (verb) อย่างน้อย 1 คำ Sentence ภายในภาษาโคบอลนั้นจะต้องจบลงด้วย"."(Period)
               
Statement คือ กลุ่มของตัวเลข กลุ่มของตัวอักษร และรวมถึงสัญลักษณ์พิเศษต่าง ๆ ซึ่งนำมาประกอบกันให้ได้ความหมายเป็นคำสั่งตามรูปแบบเงื่อนไขที่ภาษากำหนดขึ้นให้ใช้(Reserved Words) โดยอาจจะมีการผสมอักระกันเป็น 1 Statement แล้วนำมาผูกกันเป็นกลุ่มของคำสั่ง เพื่อสั่งให้เครื่องคอมพิวเตอร์ทำงานให้ได้ผลลัพธ์ตามที่ต้องการ
           
Clause คือ กลุ่มของ Characters (อักขระ) และ Words เพื่อใช้สำหรับอธิบายถึง Entry ภายในโปรแกรมนั้น ๆ
               
Word  คือ กลุ่มของ Characters ซึ่งจะต้องมีอย่างน้อย 1 ตัวอักขระขึ้นไป ซึ่งโครงสร้างของ Word ได้อธิบายไว้แล้วข้างต้น
           
Character ตัวอักขระ เป็นหน่วยที่เล็กที่สุดในโปรแกรมภาษาทางคอมพิวเตอร์ ดูรายละเอียดภายในหัวข้อเรื่อง สัญลักษณ์ในภาษา COBOL

2.  สัญลักษณ์ในภาษา COBOL (มี 51 ตัว)
 

Character (อักขระ) หมายถึง ตัวเลขและเครื่องหมายต่าง ๆ ที่เครื่องคอมพิวเตอร์รับได้ในรูปของ ASCII CODE หรือ เลขฐาน 16 (แล้วแต่ระบบการเก็บข้อมูล ภายในหน่วยความจำของแต่ละเครื่องฯ) ซึ่งใช้ประกอบขึ้นเป็นคำ (Word) ในการเขียนเป็นภาษาโปรแกรม ซึ่งประกอบด้วย

- ชุดอักษร (Alphabetic) "A...Z"
- ชุดตัวเลข (Numeric) "0..9"
- ชุดสัญลักษณ์พิเศษ (Special Character){+ - * / . ** $ * > < = ( ) " ' ; _ }

2.1 ชุดอักษร(Alphabetic)  "A...Z" ใช้ในการสร้าง (Word) เพื่อตั้งชื่อให้กับตัวแปร(Variable Name Identifier) และตั้งชื่อให้กับแฟ้มข้อมูล (Identification ,Program Name, Program ID) ในโปรแกรมภาษาโคบอล โดยจะตั้งชื่อให้ซ้ำกับ Reserved Words ไม่ได้ และจะตั้งชื่อตัวแปรเกิน 30 ตัวอักษรไม่ได้ และ ตั้งชื่อของแฟ้มข้อมูลทุกประเภทที่ใช้ในการเขียนโปรแกรมภาษาโคบอล เกิน 8 ตัวอักษรไม่ได้ และในการติดตั้งชื่อแฟ้มข้อมูล หรือตั้งชื่อให้กับตัวแปร อาจจะมีตัวอักขระปะปนตัวเลขก็ได้ แต่จะใช้ตัวอักขระพิเศษมาผสมด้วยไม่ได้ จะอนุโลมให้ใช้ "_"(Hyphen) ได้เฉพาะในภาษาโคบอลเพียงเท่านั้น และในการตั้งชื่อให้กับตัวแปร หรือ ชื่อแฟ้มข้อมูลจะขึ้นต้น หรือนำหน้าด้วยตัวเลข หรือ Hyphen ไม่ได้
 

2.2 ชุดตัวเลข (Numeric)  "0..9" ใช้ในการกำหนดค่าให้กับตัวแปร เพื่อนำไปทำการคำนวณหาค่าต่าง ๆ ที่เป็นผลลัพธ์ตามที่เราต้องการ หรือ อาจจะใช้ผสมกับกลุ่มตัวอักษรให้กับตัวแปร หรือใช้ตั้งชื่อแฟ้มข้อมูล
 

2.3 ชุดสัญลักษณ์พิเศษ (Special Character) ชุดสัญลักษณ์พิเศษ เราสามารถแบ่งออกได้ตามหน้าที่ดังนี้

ใช้ในการคำนวณ เราเรียกว่า Arithmetic Operator
                +(บวก)  / (หาร)
                -(ลบ) ** (ยกกำลัง)
                * (คูณ)  ( ) (เครื่องหมายวงเล็บ)
ใช้ในการเปรียบเทียบ ในเชิงคณิตศาสตร์ Relation operator
                > มากกว่า  or IS GREATER THAN
                < น้อยกว่า or IS LESS THAN
                = เท่ากับ  or IS EQUAL
ใช้ในการกำกับ การเว้นวรรคตอน Punctuation Operator
            { - , . " : ; () }
ใช้ในการกำหนดรูปแบบของการพิมพ์ (Print Format)
B (Blank Or Space) V V (Period for format Decimal)
                Z        ,
                $        B
                +        CR
                -        DB
                0       .
                *      Space

3. ประเภทของคำ (Types Of Words)
 

คำ เกิดขึ้นจากการผสมระหว่างตัวอักษร กับตัวเลข หรือจะเป็นตัวอักษรล้วน ๆ ก็ได้ ซึ่งจะต้องเป็นไปตามเงื่อนไขหรือกฎเกณฑ์ของภาษานั้น ๆ ดังได้กล่าวมาแล้วข้างต้น ซึ่งแบ่งออกเป็น  ประเภท ใหญ่ ๆ ดังนี้

3.1 คำสงวน (Reserved Word) คำสงวนไว้ใช้ในกรณี ๆ ไปโดยเฉพาะ ไม่สามารถนำคำสงวนไปใช้ในหน้าที่อื่น ๆ ที่ไม่ใช่หรือ ไม่ได้กำหนดไว้ โดยคำสงวนจะมีความหมายในตัวของมันเอง ซึ่งแบ่งออก

เป็น 3 ประเภท
- Key word คือคำที่เราต้องเขียนเสมอ หรือ เป็นคำที่ตัว Compiler Cobol รู้จัก ได้แก่ Read , Into, End
- Option Word จะใช้ หรือ ไม่ใช้ก็ได้ เขียนแทนด้วยตัวอักษรตัวพิมพ์ใหญ่ แต่ไม่มีขีดเส้นใต้กำกับไว้ มีไว้เพื่อขยายประโยคให้สมบูรณ์ เช่น Record, At
- Connective Word เพื่อขยายใจความประโยคหรือเชื่อมโยงคำ เช่น Of ,In

3.2 คำที่ไม่ใช่คำสงวน หมายถึง คำอื่น ๆ ซึ่งผู้เขียนโปรแกรม ตั้งชื่อขึ้นเองตามกฏเกณฑ์การตั้งชื่อ ในภาษาโคบอลห้ามตั้งชื่อตรงกับคำสงวนหรือซ้ำคำสงวน
-  Data Name ใช้อ้างอิงถึงข้อมูล หรือตัวแปร
-  Condition Name ชื่อข้อมูลที่ใช้ในการสร้างเงื่อนไขขึ้นเพื่อเลือกตัดสินใจในการทำงาน และเพื่อทดสอบโปรแกรม
-   Paragraph Name หมายถึง ชื่อหัวข้อของชุดคำสั่งที่ปรากฏอยู่ในส่วนต่าง ๆของโปรแกรม

3.3 Special Name  ชื่อพิเศษต้องอยู่ในพารากราฟทึ่ชื่อ Special Names ซึ่งอยู่ภายใน Environment Division ซึ่งผู้เขียนโปรแกรมจะเป็นผู้ตั้งขึ้นเองเพื่อนำไปใช้ประโยชน์ในการเขียนโปรแกรมให้สั้น และรัดกุม แต่มีประสิทธิภาพมากขึ้น

4. ตัวแปร(Variable) และ ค่าคงที่ (Literal)

4.1 ตัวแปร หมายถึง ข้อมูลที่มีการเปลี่ยนแปลงค่อยู่ตลอดเวลาในโปรแกรม
- ตัวแปรชนิดตัวเลข (Numeric variable) ประกอบไปด้วยตัวเลข 0 - 9 สามารถนำไปคำนวณได้
- ตัวแปรชนิดอักขระ (Alphabetic variable) ประกอบไปด้วยตัวอักษร A..Z และ Blank Or Space และ Hyphen (-)
- ตัวแปรชนิดที่เป็นทั้งตัวเลขและตัวอักขระ (Alphabumeric variable)ได้แก่ตัวเลข ตัวอักษร สัญลักษณ์พิเศษ

4.2 ค่าคงที่ (Literal)
ค่าคงที่เป็นตัวเลข(Numeric Literal) ประกอบด้วยตัวเลข 0-9

แบบฟอร์ม ของกระดาษเขียนโปรแกรม
ในการเขียนโปรแกรมด้วยภาษาใด ๆ ก็ตาม จำเป็นต้องเขียนลงในกระดาษ ตามแบบฟอร์มซึ่งแต่ละภาษากำหนดเอาไว้ ภาษาโคบอล ก็เช่นกัน เราต้องเขียนโปรแกรมลงในกระดาษสำหรับเขียนโปรแกรมโดยเฉพาะ กระดาษพิเศษที่ใช้เขียนโปรแกรมภาษาโคบอลนี้เรียกว่า Cobol Coding Form รูปแบบนี้ เหมือนรูปแบบมาตรฐานของบัตร 80 คอลัมน์ คือ ในกระดาษหนึ่งบรรทัดแบ่งออกเป็น 80 คอลัมน์ เช่นเดียวกันและกระดาษเขียนโปรแกรมหนึ่งแผ่น จะมีประมาณ 20 บรรทัด อย่างไรก็ตามทุกวันนี้เรามักจะส่งโปรแกรมเข้าเครื่องคอมพิวเตอร์ทางจอภาพมากกว่า รายละเอียดของหัวกระดาษตอนบน

1.System ให้ใส่รายละเอียดของระบบที่ใช้ในการเขียนโปรแกรม หรือ รายละเอียดของเครื่องคอมพิวเตอร์ที่ใช้ หรืออาจจะเป็นชื่อระบบก็ได้
2.Program ให้ใส่ชื่อโปรแกรม หรืออาจจะเป็นชื่อของโปรแกรมย่อยก็ได้
3.Programmer ใส่ชื่อโปรแกรมเมอร์หรือชื่อของผู้เขียนโปรแกรม
4.Date ใส่วัน เดือน ปี ที่เขียนโปรแกรม
5.Page of ให้ใส่ตัวเลขบอกจำนวนหน้า จำนวนตัวเลขหลัง OF หมายถึงจำนวน Coding Sheet ทั้งหมดที่ใช้เขียนโปรแกรมนี้ และตัวเลขหลัง Page หมายถึง เลขบอกหน้าของ Coding Sheet

 

 
การใช้เครื่องหมายวรรคตอน(Punctuation)

จุดประสงค์ ของการใช้เครื่องหมายวรรคตอนเพื่อบอกให้ Compiler ทราบว่าจบประโยคเมื่อไหร่ จบคำเมื่อไหร่ และช่วยในการอ่านโปรแกรมได้ง่ายขึ้น

วิธีแปล COBOL 4.5

 - copy โปรแกรมไว้ในห้อง c:\cobol ผลการคัดลอกจะมีห้อง หรือ folder 8 ห้อง
 คือ  Binb, Binr, Demo, Docs, Help, Init, Lib, Source
- Click Start, Run แล้วพิมพ์ Command

- ต่อจากนี้เราจะทำงานใน DOS Prompt
- พิมพ์ Doskey เพื่อจะได้ใช้ลูกศร ขึ้น - ลง เรียกคำสั่งเก่าได้ง่าย
- สั่งกำหนดค่าเริ่มต้น ด้วยการพิมพ์ c:\cobol\binr\new-vars.bat ที่ DOS Prompt
- ลองพิมพ์คำว่า set ที่ DOS Prompt จะมีคำว่า COBOL ใน 6 บรรทัดสุดท้าย
- cd c:\cobol เข้าห้องนี้ เพื่อเตรียมทดสอบสร้าง และแปลโปรแกรม

- พิมพ์ edit test.cbl
  พิมพ์คำว่า procedure division. โดยอักษร p เริ่มหลัก หรือ col หรือ column ที่ 8
  พิมพ์คำว่า display 5. โดยอักษร d เริ่มหลัก หรือ col หรือ column ที่ 12
  ออกจากโปรแกรม edit ด้วยการกด Alt+F, X, Y
- ทดสอบแปล ลิงค์ และประมวลผล โปรแกรมชื่อ test.cbl ในห้อง c:\cobol
        C:\cobol>cobol test,test,test,nul
        C:\cobol>link test,test,nul,,nul
        C:\cobol>test

ตัวอย่าง Source code COBOL 4.5
           

FOR Cobol 4.5
        C:\>c:\cobol\binr\new-vars.bat
        C:\>cd c:\cobol
        C:\cobol>cobol test,test,test,nul
        Microsoft (R) COBOL Optimizing Compiler Version 4.5
        COBOL software by Micro Focus
        Copyright (C) Microsoft Corporation 1984,1991.  All rights reserved.
        Copyright (C) Micro Focus Ltd. 1984,1991.  All rights reserved.
        * Checking complete with no errors - starting code generation
        * Data = 000000613 Code = 000000276 Dictionary = 000001154
        C:\cobol>link test,test,nul,,nul
        Microsoft (R) Segmented-Executable Linker  Version 5.15
        Copyright (C) Microsoft Corp 1984-1991.  All rights reserved.
        C:\cobol>test
        5
        C:\cobol>

CREDIT : http://yodrak2006.multiply.com/journal/item/16/16
               http://www.blognone.com/news/20574
               http://www.thaiall.com/cobol/indexo.html

edit @ 11 Jul 2011 18:55:33 by Oilg_2PT9

Comment

smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

your code here