วันจันทร์ที่ 30 กันยายน พ.ศ. 2556

ภาษาโคบอล

ประวัติภาษาโคบอล
ภาษาโคบอลได้ถือกำเนิดขึ้นเมื่อปี ค.ศ.1959 โดยได้มีการร่วมมือกันจัดตั้งคณะกรรมการขึ้นชุดหนึ่งให้ชื่อว่า CODASYL : Conference On DAtaSYstems Languages ซึ่งมีทั้งภาครัฐบาล และภาคเอกชนกลุ่มผู้ผลิตเครื่องคอมพิวเตอร์ในยุคนั้น ซึ่งได้ร่วมมือกันพัฒนาขึ้นเพื่อให้สามารถนำมาใช้กัน และให้เหมาะสมกับการประมวลผลข้อมูลทางด้านธุรกิจ ซึ่งได้ทำงานสรุปเป็นผลสำเร็จในปี ค.ศ. 1960 และให้ชื่อภาษาที่ได้สร้างขึ้นใหม่นี้ว่า "COBOL-60" และต่อมาภายหลังก็ได้มีการปรับปรุงแก้ไขพัฒนาภาษาโคบอลให้ทันต่อยุคต่อเหตุการณ์ ซึ่งมีการแก้ไขปรับปรุงขึ้นในปีค.ศ. 1961 ซึ่งเรียกว่า "COBOL-61" ต่อมาได้มีการปรับปรุงแก้ไขเพิ่มเติมขึ้นอีกเล็กน้อย ในปี ค.ศ. 1963 และต่อมาในปี ค.ศ. 1965 และต่อมาในปี ค.ศ. 1968 ภาษาโคบอลได้ถูกยกระดับไห้เป็นภาษามาตราฐาน โดยสถาบัน The American National Standards Institute : ANSI โดยกำหนดภาษาโคบอลที่มีใช้กันอยู่ในขณะนั้นให้เป็นมาตราฐานเป็นอย่างเดียวกัน โดยแยกออกเป็นหลายระดับ และให้ยึดถือ COBOL-65 เป็นหลัก การใช้ภาษาโคบอลได้รับความนิยมแพร่หลายขึ้นในปี ค.ศ. 1970 เนื่องจากภาษาโคบอลได้มีการกำหนดความเป็นมาตราฐานขึ้น และได้มีการพัฒนาภาษาไปพร้อม ๆ กับการพัฒนาตัว Compiler ให้มีประสิทธิภาพมากยิ่งขึ้น
ในการเขียนโปรแกรมภาษาโคบอลเราจะแบ่งออกเป็นส่วน ๆ ดังนี้
1. ส่วนประกอบของโปรแกรม ภาษาโคบอล
2. สัญลักษณ์ ที่ใช้ในภาษาโคบอล
3. ประเภทของคำ
4. ตัวแปร และ ค่าคงที่
5. แบบฟอร์ม สำหรับการเขียนโปรแกรม COBOL (COBOL CODING FORM)
6. การใช้เครื่องหมายวรรคตอน

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

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/OutputDevisionที่จะนำมาใช้กับโปรแกรมนี้
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

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

สัญลักษณ์ในภาษา COBOL (มี 51 ตัว)
Character (อักขระ) หมายถึง ตัวเลขและเครื่องหมายต่าง ๆ ที่เครื่องคอมพิวเตอร์รับได้ในรูปของ ASCII CODE หรือ เลขฐาน 16 (แล้วแต่ระบบการเก็บข้อมูล ภายในหน่วยความจำของแต่ละเครื่องฯ) ซึ่งใช้ประกอบขึ้นเป็นคำ (Word) ในการเขียนเป็นภาษาโปรแกรม ซึ่งประกอบด้วย
ชุดอักษร(Alphabetic) "A...Z"
ชุดตัวเลข(Numeric) "0..9"
ชุดสัญลักษณ์พิเศษ(Special Character){+ - * / . ** $ * >< = ( ) " ' ; _ }

ประเภทของคำ (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 ซึ่งผู้เขียนโปรแกรมจะเป็นผู้ตั้งขึ้นเองเพื่อนำไปใช้ประโยชน์ในการเขียนโปรแกรมให้สั้น และรัดกุม แต่มีประสิทธิภาพมากขึ้น
ตัวแปร(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 ทราบว่าจบประโยคเมื่อไหร่ จบคำเมื่อไหร่ และช่วยในการอ่านโปรแกรมได้ง่ายขึ้น
ชุดคำสั่งภาษาโคบอล
เป็นภาษาที่นิยมใช้กันมากในทางธุรกิจ เป็นภาษาที่เขียนสั่งการทำงานโดยใช้คำพูดเป็นประโยค ภายในประโยคจะมีกริยา เมื่อจบแต่ละประโยคจะต้องมีจุด (.)กำกับเมื่อจบ ภาษานี้ไม่เหมาะกับงานที่มีการคำนวณเพราะเขียนยากกว่า เครื่องคอมพิวเตอร์ที่ทำงานตามภาษาโคบอลได้ จะต้องมีตัวแปลชุดคำสั่งภาษาโคบอล เพื่อใช้ในการแปลชุดคำสั่งภาษาโคบอลที่เป็นชุดคำสั่งเริ่มต้น เป็นภาษาเครื่องที่ชุดคำสั่งควบคุมจะสามารถรับได้ ชุดคำสั่งทำงานที่แปลได้นี้อาจจะอยู่ในรูปของบัตรแถบแม่เหล็ก หรือจานแม่เหล็ก
การเขียนภาษาโคบอลจะแบ่งออกเป็น ๔ ส่วนคือ
๑. ส่วนกำหนดลักษณะ (identification division) เป็นส่วนที่บอกชื่อผู้เขียน และวันที่เขียน
๒. ส่วนบอกลักษณะเครื่อง (environment division) เป็นส่วนที่บอกว่าจะใช้เครื่องอ่านบัตร เครื่องพิมพ์แถบแม่เหล็ก และจานแม่เหล็กอย่างไร
๓. ส่วนบอกลักษณะข้อมูล (data division)เป็นส่วนที่บอกว่าการจัดข้อมูลที่จะนำเข้าและแสดงผลมีลักษณะเช่นใด รวมทั้งข้อมูลที่จำในหน่วยความจำเป็นอย่างไร
๔. ส่วนบอกการทำงาน (procedure division)เป็นส่วนที่เขียนคำสั่งที่นำเอาข้อมูลที่กำหนดในส่วนบอกลักษณะข้อมูลมาใช้งาน

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

ตัวอย่างการเขียนโปรแกรมด้วยภาษา COBOL
IF SALES-AMOUNT IS GREATER THAN SALES-QUOTA
COMPUTE COMMISSION = MAX-RATE * SALES - AMOUNT
ELSE
COMPUTE COMMISSION = MIN-RATE * SALES - AMOUNT