โคบอล

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

โคบอล
รายงานโคบอล เมษายน60.djvu
หน้าปกของ รายงาน COBOL 60ถึงCODASYL (เมษายน 1960)
กระบวนทัศน์ขั้นตอนความจำเป็นเชิงวัตถุ
ออกแบบโดยHoward Bromberg , Norman Discount , Vernon Reeves , Jean E. Sammet , William Selden , Gertrude Tierneyที่มีอิทธิพลทางอ้อมจากGrace Hopper [1]
นักพัฒนาโค ดาซิล , ANSI , ISO
ปรากฏตัวครั้งแรก2502 ; 63 ปีที่แล้ว ( 2502 )
ปล่อยที่มั่นคง
ISO/IEC 1989:2014 / 2014
วินัยการพิมพ์อ่อนแอคงที่
นามสกุลไฟล์.cbl, .cob,.cpy
การใช้งานหลัก
GnuCOBOL , IBM COBOL ,ไมโครโฟกัส Visual COBOL
ภาษาถิ่น
COBOL/2, DEC COBOL-10, DEC VAX COBOL, DOSVS COBOL, Envyr ICOBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL SAA, IBM COBOL/400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL (VME), Micro Focus ACUCOBOL-GT, Micro Focus COBOL-IT, Micro Focus RM/COBOL, Micro Focus Visual COBOL, Microsoft COBOL, Raincode COBOL, Realia COBOL, Ryan McFarland RM/ COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys MCP COBOL85, Unix COBOL X/Open, Veryant isCOBOL, Wang VS COBOL
ได้รับอิทธิพลจาก
ชื่อย่อ : AIMACO , COMTRAN , FACT , FLOW-MATIC
COBOL 2002: [a] C++ , Eiffel , Smalltalk
ได้รับอิทธิพล
CobolScript , [5] EGL , [6] PL/I , [7] PL/B [ ต้องการการอ้างอิง ]

โคบอล ( / ˈ k b ɒ l , - b ɔː l / ; ตัวย่อสำหรับ "ภาษาเชิงธุรกิจทั่วไป") เป็น ภาษา โปรแกรมคอมพิวเตอร์ ที่ รวบรวม เป็น ภาษาอังกฤษที่ออกแบบมาสำหรับการใช้งานทางธุรกิจ มันเป็นภาษาเชิงวัตถุจำเป็นขั้นตอนและตั้งแต่ปี 2002 ภาษาโคบอลใช้เป็นหลักในระบบธุรกิจ การเงิน และการบริหารสำหรับบริษัทและรัฐบาล ภาษาโคบอลยังคงใช้กันอย่างแพร่หลายในแอปพลิเคชันที่ปรับใช้บนคอมพิวเตอร์เมนเฟรมเช่น แบต ช์ ขนาดใหญ่และงานประมวลผลธุรกรรม อย่างไรก็ตาม เนื่องจากความนิยมที่ลดลงและการเลิกจ้างโปรแกรมเมอร์ภาษาโคบอลต์ที่มีประสบการณ์ โปรแกรมจึงถูกย้ายไปยังแพลตฟอร์มใหม่ เขียนใหม่ในภาษาสมัยใหม่ หรือแทนที่ด้วยแพ็คเกจซอฟต์แวร์ [8]การเขียนโปรแกรมในภาษาโคบอลส่วนใหญ่ในปัจจุบันเป็นเพียงการรักษาแอปพลิเคชันที่มีอยู่เท่านั้น อย่างไรก็ตาม สถาบันการเงินขนาดใหญ่หลายแห่งยังคงพัฒนาระบบใหม่ในภาษาโคบอลจนถึงปลายปี 2549 [9]

COBOL ได้รับการออกแบบในปี 1959 โดยCODASYL และส่วนหนึ่งมา จากภาษาโปรแกรมFLOW-MATICซึ่งออกแบบโดยGrace Hopper มันถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของ ความพยายาม ของกระทรวงกลาโหมสหรัฐในการสร้าง ภาษาโปรแกรม แบบพกพาสำหรับการประมวลผลข้อมูล เดิมทีมันถูกมองว่าเป็นจุดแวะพัก แต่กระทรวงกลาโหมได้บังคับให้ผู้ผลิตคอมพิวเตอร์จัดหาให้โดยทันที ส่งผลให้เกิดการยอมรับอย่างกว้างขวาง [10]ได้มาตรฐานในปี 2511 และได้รับการปรับปรุงสี่ครั้งตั้งแต่นั้นเป็นต้นมา การขยายรวมถึงการสนับสนุนสำหรับ การเขียนโปรแกรม แบบมีโครงสร้างและเชิงวัตถุ มาตรฐานปัจจุบันคือISO /ไอ อีซี 1989:2014 . (11)

คำสั่งภาษาโคบอลมีรูปแบบคล้ายภาษาอังกฤษ ซึ่งได้รับการออกแบบมาให้จัดทำเอกสารด้วยตนเองและอ่านง่าย อย่างไรก็ตาม มันละเอียดและใช้คำสงวน มากกว่า 300 คำ ตรงกันข้ามกับรูปแบบที่ทันสมัยและกระชับ เช่นภาษา COBOL มีรูปแบบที่คล้ายภาษาอังกฤษมากกว่า (ในกรณีนี้คือ) รหัสภาษาโคบอลแบ่งออกเป็นสี่ส่วน (การระบุ สภาพแวดล้อม ข้อมูล และขั้นตอน) ซึ่งประกอบด้วยลำดับชั้นของส่วน ย่อหน้า และประโยคที่เข้มงวด ขาดไลบรารีมาตรฐาน ขนาดใหญ่ มาตรฐานระบุ 43 คำสั่ง 87 ฟังก์ชันและเพียงหนึ่งคลาส y = x;MOVE x TO y

นักวิทยาศาสตร์คอมพิวเตอร์เชิงวิชาการมักไม่สนใจการใช้งานทางธุรกิจเมื่อ COBOL ถูกสร้างขึ้นและไม่เกี่ยวข้องกับการออกแบบ มันถูกออกแบบ (อย่างมีประสิทธิภาพ) ตั้งแต่ต้นจนจบเป็นภาษาคอมพิวเตอร์สำหรับธุรกิจ โดยเน้นที่อินพุตและเอาต์พุต ซึ่งมีเพียงประเภทข้อมูลเท่านั้นที่มีตัวเลขและสตริงข้อความ [12] ภาษาโคบอลต์ได้รับการวิพากษ์วิจารณ์ มา ตลอดชีวิตเพราะใช้คำฟุ่มเฟือย ขั้นตอนการออกแบบ และการสนับสนุนที่ไม่ดีสำหรับ การเขียนโปรแกรม แบบมีโครงสร้าง จุดอ่อนเหล่านี้ส่งผลให้โปรแกรมแบบเสาหิน ละเอียด (ตั้งใจให้เหมือนภาษาอังกฤษ) ที่ไม่สามารถเข้าใจได้ง่าย

ประวัติและข้อมูลจำเพาะ

ความเป็นมา

ในช่วงปลายทศวรรษ 1950 ผู้ใช้คอมพิวเตอร์และผู้ผลิตเริ่มกังวลเกี่ยวกับต้นทุนการเขียนโปรแกรมที่สูงขึ้น จากการสำรวจในปี 2502 พบว่าในการติดตั้งการประมวลผลข้อมูลใดๆ การเขียนโปรแกรมมีค่าใช้จ่ายโดยเฉลี่ย 800,000 เหรียญสหรัฐ และการแปลโปรแกรมเพื่อรันบนฮาร์ดแวร์ใหม่จะมีราคา 600,000 เหรียญสหรัฐ ในช่วงเวลาที่ภาษาโปรแกรมใหม่ๆ แพร่หลายในอัตราที่เพิ่มมากขึ้นเรื่อยๆ แบบสำรวจเดียวกันนี้แนะนำว่าหากใช้ภาษาเชิงธุรกิจทั่วไป การแปลงจะถูกกว่าและเร็วกว่ามาก [13]

เมื่อวันที่ 8 เมษายน พ.ศ. 2502 Mary K. Hawesนักวิทยาศาสตร์คอมพิวเตอร์ที่Burroughs Corporationได้เรียกประชุมผู้แทนจากสถาบันการศึกษา ผู้ใช้คอมพิวเตอร์ และผู้ผลิตที่มหาวิทยาลัยเพนซิลเวเนียเพื่อจัดการประชุมอย่างเป็นทางการเกี่ยวกับภาษาธุรกิจทั่วไป [14]ตัวแทนรวมถึงGrace Hopper (ผู้ประดิษฐ์ภาษาการประมวลผลข้อมูลคล้ายภาษาอังกฤษFLOW -MATIC ), Jean SammetและSaul Gorn [15] [16]

ในการประชุมเดือนเมษายน กลุ่มได้ขอให้กระทรวงกลาโหม (DoD) สนับสนุนความพยายามในการสร้างภาษาธุรกิจร่วมกัน คณะผู้แทนสร้างความประทับใจให้กับ Charles A. Phillips ผู้อำนวยการ Data System Research Staff ที่ DoD [17]ซึ่งคิดว่าพวกเขา "เข้าใจอย่างถ่องแท้" ปัญหาของกระทรวงกลาโหม DoD ดำเนินการคอมพิวเตอร์ 225 เครื่อง มีอีก 175 เครื่องในการสั่งซื้อ และใช้เงินกว่า 200 ล้านดอลลาร์ในการติดตั้งโปรแกรมเพื่อใช้งาน โปรแกรมแบบพกพาจะช่วยประหยัดเวลา ลดค่าใช้จ่าย และลดความทันสมัยลง [18]

Charles Phillips ตกลงที่จะสนับสนุนการประชุมและมอบหมายให้คณะผู้แทนเป็นผู้ร่างวาระการประชุม (19)

โคบอล 60

เมื่อวันที่ 28 และ 29 พฤษภาคม พ.ศ. 2502 (หนึ่งปีหลังจากการประชุมซูริคALGOL 58 ) มีการจัดประชุมขึ้นที่กระทรวงกลาโหมเพื่อหารือเกี่ยวกับการสร้างภาษาโปรแกรมทั่วไปสำหรับธุรกิจ มีผู้เข้าร่วม 41 คนและมีฟิลิปส์เป็นประธาน (20 ) กระทรวงกลาโหมกังวลว่าจะสามารถเรียกใช้โปรแกรมประมวลผลข้อมูลเดียวกันบนคอมพิวเตอร์คนละเครื่องได้หรือไม่ FORTRANซึ่งเป็นภาษากระแสหลักเพียงภาษาเดียวในขณะนั้น ขาดคุณสมบัติที่จำเป็นในการเขียนโปรแกรมดังกล่าว (21)

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

การประชุมส่งผลให้มีการจัดตั้งคณะกรรมการอำนวย การ และคณะกรรมการระยะสั้น ระดับกลาง และระยะยาว คณะกรรมการระยะสั้นได้รับมอบหมายให้เดือนกันยายน (สามเดือน) เพื่อจัดทำข้อกำหนดสำหรับภาษาชั่วคราว ซึ่งคณะกรรมการชุดอื่นๆ จะปรับปรุงให้ดีขึ้น [23] [24]ภารกิจอย่างเป็นทางการของพวกเขาคือการระบุจุดแข็งและจุดอ่อนของภาษาโปรแกรมที่มีอยู่และไม่ได้ชี้นำให้สร้างภาษาใหม่อย่างชัดเจน [21] กำหนดเส้นตายพบกับความไม่เชื่อโดยคณะกรรมการระยะสั้น สมาชิกคนหนึ่งเบ็ตตี ฮ อลเบอร์ตัน อธิบายว่าเส้นตายสามเดือนเป็น "การมองโลกในแง่ดีโดย รวม " และสงสัยว่าภาษานั้นจะเป็นจุดแวะพักจริงๆ (26)

คณะกรรมการดำเนินการประชุมเมื่อวันที่ 4 มิถุนายน และตกลงที่จะตั้งชื่อกิจกรรมทั้งหมดว่าเป็นคณะกรรมการภาษาระบบข้อมูลหรือCODASYLและจัดตั้งคณะกรรมการบริหาร [27]

คณะกรรมการระยะสั้นประกอบด้วยสมาชิกที่เป็นตัวแทนของผู้ผลิตคอมพิวเตอร์ 6 รายและหน่วยงานราชการ 3 แห่ง ผู้ผลิตคอมพิวเตอร์ 6 ราย ได้แก่Burroughs Corporation , IBM , Minneapolis-Honeywell (Honeywell Labs), RCA , Sperry RandและSylvania Electric Products หน่วยงานรัฐบาลสามแห่ง ได้แก่กองทัพอากาศ สหรัฐฯ ลุ่มน้ำแบบจำลอง David Taylorของกองทัพเรือและสำนักงานมาตรฐานแห่งชาติ (ปัจจุบันคือสถาบันมาตรฐานและเทคโนโลยีแห่งชาติ) (28)โจเซฟ เวกสไตน์เป็นประธานคณะกรรมการของสำนักงานมาตรฐานแห่งชาติสหรัฐอเมริกา งานเริ่มต้นด้วยการตรวจสอบคำอธิบายข้อมูล คำสั่ง แอปพลิเคชันที่มีอยู่ และประสบการณ์ของผู้ใช้ [29]

คณะกรรมการตรวจสอบภาษาโปรแกรมFLOW-MATIC , AIMACOและCOMTRAN เป็นหลัก [21] [30] ภาษา FLOW-MATIC มีอิทธิพลอย่างยิ่ง เนื่องจากมีการใช้งานและเนื่องจาก AIMACO เป็นอนุพันธ์ของภาษานี้โดยมีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น [31] [32] ผู้ประดิษฐ์ของ FLOW-MATIC เกรซ ฮอปเปอร์ ยังทำหน้าที่เป็นที่ปรึกษาด้านเทคนิคของคณะกรรมการอีกด้วย [25] FLOW-MATIC มีส่วนสำคัญต่อภาษาโคบอลคือชื่อตัวแปรแบบยาว คำภาษาอังกฤษสำหรับคำสั่ง และการแยกคำอธิบายข้อมูลและคำสั่ง [33] Hopper บางครั้งเรียกว่า "แม่ของ COBOL" หรือ "ยายของ COBOL", [34] [35][36]แม้ว่า Jean Sammetหัวหน้านักออกแบบของ COBOL กล่าวว่า Hopper "ไม่ใช่แม่ ผู้สร้าง หรือผู้พัฒนา Cobol" [37] [1]

ภาษา COMTRAN ของ IBM ซึ่งคิดค้นโดยBob Bemerได้รับการยกย่องว่าเป็นคู่แข่งของ FLOW-MATIC [38] [39]โดยคณะกรรมการระยะสั้นซึ่งประกอบด้วยเพื่อนร่วมงานของ Grace Hopper [40] คุณลักษณะบางอย่างไม่ได้รวมอยู่ใน COBOL เพื่อไม่ให้ดูเหมือนว่า IBM ครอบงำกระบวนการออกแบบ[23]และ Jean Sammet กล่าวในปี 1981 ว่ามี "อคติต่อต้าน IBM ที่แข็งแกร่ง" จากคณะกรรมการบางแห่ง สมาชิก (รวมตัวเองด้วย) [41] ในกรณีหนึ่ง หลังจากที่รอย โกลด์ฟิงเกอร์ ผู้เขียนคู่มือ COMTRAN และสมาชิกคณะกรรมการระดับกลาง ได้เข้าร่วมการประชุมคณะอนุกรรมการเพื่อสนับสนุนภาษาของเขาและสนับสนุนการใช้สำนวนเกี่ยวกับพีชคณิต เกรซ ฮ็อปเปอร์ได้ส่งบันทึกช่วยจำไปยังคณะกรรมการระยะสั้นเพื่อย้ำถึง Sperry Rand ความพยายามในการสร้างภาษาตามภาษาอังกฤษ [42] ในปี 1980 เกรซ ฮ็อปเปอร์ ให้ความเห็นว่า "COBOL 60 is 95% FLOW-MATIC" และ COMTRAN มีอิทธิพล "น้อยมาก" นอกจากนี้ เธอกล่าวว่าเธอจะอ้างว่างานได้รับอิทธิพลจากทั้ง FLOW-MATIC และ COMTRAN เพียงเพื่อ "ทำให้คนอื่นมีความสุข [เพื่อที่พวกเขา] จะไม่พยายามที่จะทำให้เราล้มลง" [43] คุณสมบัติจาก COMTRAN ที่รวมอยู่ในสูตรรวมภาษาโคบอล[ 44]ข้อ,PICTUREคำสั่ง ที่ได้รับการปรับปรุงIFซึ่งขัดต่อความต้องการGO TOsและระบบการจัดการไฟล์ที่แข็งแกร่งยิ่งขึ้น [38]

ประโยชน์ของงานของคณะกรรมการเป็นเรื่องที่ถกเถียงกันมาก ในขณะที่สมาชิกบางคนคิดว่าภาษามีข้อประนีประนอมมากเกินไปและเป็นผลมาจากการออกแบบโดยคณะกรรมการคนอื่นๆ รู้สึกว่าดีกว่าสามภาษาที่ตรวจสอบ บางคนรู้สึกว่าภาษานั้นซับซ้อนเกินไป อื่น ๆ ง่ายเกินไป [46] คุณลักษณะที่ขัดแย้งกันรวมถึงคุณลักษณะบางอย่างที่ถือว่าไร้ประโยชน์หรือสูงเกินไปสำหรับผู้ใช้ในการประมวลผลข้อมูล คุณลักษณะดังกล่าวรวมถึงนิพจน์บูลีนสูตรและ ตัว ห้อยตาราง(ดัชนี) [47] [48]ประเด็นขัดแย้งอีกประการหนึ่งคือการสร้างคำหลักที่คำนึงถึงบริบทและผลกระทบที่จะส่งผลต่อความสามารถในการอ่านหรือไม่ [47]แม้ว่าคีย์เวิร์ดที่ไวต่อบริบทจะถูกปฏิเสธ แต่วิธีการนี้ก็ถูกนำมาใช้ในภายหลังในPL/Iและบางส่วนในภาษาโคบอลตั้งแต่ปี 2002 [49]โดยคำนึงถึงการโต้ตอบ เพียงเล็กน้อย การโต้ตอบกับระบบปฏิบัติการ (มีอยู่ไม่กี่อย่างในขณะนั้น) และหน้าที่ (คิดว่า ในทางคณิตศาสตร์ล้วนๆ และไม่มีประโยชน์ในการประมวลผลข้อมูล) [50] [51]

โดยนำเสนอต่อคณะกรรมการบริหารเมื่อวันที่ 4 กันยายน พวกเขาขาดความคาดหวัง: Joseph Wegstein สังเกตว่า "มันมีจุดหยาบและต้องมีการเพิ่มเติม" และ Bob Bemer อธิบายในภายหลังว่าเป็น "ส่วนผสม" คณะอนุกรรมการได้รับจนถึงเดือนธันวาคมเพื่อปรับปรุง [25]

ในการประชุมกลางเดือนกันยายน คณะกรรมการได้หารือเกี่ยวกับชื่อภาษาใหม่ คำแนะนำ ได้แก่ "BUSY" (ระบบธุรกิจ), "INFOSYL" (ภาษาของระบบข้อมูล) และ "COCOSYL" (ภาษาของระบบคอมพิวเตอร์ทั่วไป) [52]ไม่ชัดเจนว่าใครเป็นคนตั้งชื่อ "โคบอล", [53] [54]แม้ว่าบ็อบ เบเมอร์จะอ้างว่าเป็นคำแนะนำของเขาในภายหลัง [55] [56] [57]

ในเดือนตุลาคม คณะกรรมการระดับกลางได้รับสำเนา ข้อกำหนดภาษา FACTที่สร้างโดยRoy Nutt ลักษณะเด่นของคณะกรรมการสร้างความประทับใจให้คณะกรรมการมากจนมีมติให้ใช้ภาษาโคบอล [58] นี่เป็นผลกระทบต่อคณะกรรมการระยะสั้นซึ่งมีความก้าวหน้าที่ดีในข้อกำหนด แม้จะเหนือกว่าทางเทคนิค แต่ FACT ไม่ได้ถูกสร้างขึ้นโดยคำนึงถึงการพกพาหรือผ่านความเห็นพ้องของผู้ผลิตและผู้ใช้ มันยังขาดการนำไปใช้ที่พิสูจน์ได้[25]ทำให้ผู้สนับสนุนของ COBOL ที่ใช้ FLOW-MATIC สามารถล้มล้างความละเอียดได้ Howard Bromberg ตัวแทนของ RCA ก็บล็อก FACT ด้วยเช่นกัน ดังนั้นงานของ RCA เกี่ยวกับการนำ COBOL ไปใช้จะไม่สูญเปล่า [59]

'คุณต้องการให้จารึกชื่ออะไร'
ฉันพูดว่า 'ฉันจะเขียนถึงคุณ' ฉันเขียนชื่อลงไป: COBOL
'นั่นชื่ออะไร'
'มันเป็นชื่อโปแลนด์ เราย่อมันและกำจัดสัญลักษณ์ที่ไม่จำเป็นออกไปมากมาย'

Howard Bromberg เกี่ยวกับวิธีการซื้อหลุมฝังศพของ COBOL [60]

ไม่ช้าก็ปรากฏชัดว่าคณะกรรมการใหญ่เกินกว่าจะคืบหน้าต่อไปโดยเร็ว Howard Bromberg ที่ผิดหวังซื้อหลุมฝังศพมูลค่า 15 ดอลลาร์โดยมีคำว่า "COBOL" สลักอยู่ และส่งไปให้ Charles Phillips เพื่อแสดงความไม่พอใจ [b] [60] [62] คณะอนุกรรมการจัดตั้งขึ้นเพื่อวิเคราะห์ภาษาที่มีอยู่และประกอบด้วยบุคคลหกคน: [21] [63]

  • William Selden และ Gertrude Tierney จาก IBM,
  • Howard Bromberg และ Howard Discount จาก RCA,
  • Vernon Reeves และJean E. Sammetจาก Sylvania Electric Products

คณะอนุกรรมการทำงานส่วนใหญ่เพื่อสร้างข้อกำหนดโดยปล่อยให้คณะกรรมการระยะสั้นตรวจสอบและแก้ไขก่อนผลิตข้อกำหนดเสร็จ (21)

ข้อมูลจำเพาะได้รับการอนุมัติจากคณะกรรมการบริหารเมื่อวันที่ 8 มกราคม 1960 และส่งไปยังสำนักงานการพิมพ์ ของรัฐบาลซึ่งพิมพ์เป็นCOBOL 60 วัตถุประสงค์ที่ระบุไว้ของภาษาคือเพื่อให้โปรแกรมแบบพกพามีประสิทธิภาพสามารถเขียนได้ง่าย เพื่อให้ผู้ใช้สามารถย้ายไปยังระบบใหม่ได้โดยใช้ความพยายามและต้นทุนเพียงเล็กน้อย และเหมาะสำหรับโปรแกรมเมอร์ที่ไม่มีประสบการณ์ [64] ภายหลังคณะกรรมการบริหารของ CODASYL ได้จัดตั้งคณะกรรมการบำรุงรักษาภาษาโคบอลขึ้นเพื่อตอบคำถามจากผู้ใช้และผู้ขาย และปรับปรุงและขยายข้อกำหนด [65]

ในช่วงปี 1960 รายชื่อผู้ผลิตที่วางแผนจะสร้างคอมไพเลอร์ภาษาโคบอลต์เติบโตขึ้น ภายในเดือนกันยายน ผู้ผลิตอีกห้ารายได้เข้าร่วมกับ CODASYL ( Bendix , Control Data Corporation , General Electric (GE), National Cash RegisterและPhilco ) และผู้ผลิตที่เป็นตัวแทนทั้งหมดได้ประกาศเปิดตัวคอมไพเลอร์ COBOL GE และ IBM วางแผนที่จะรวม COBOL เข้ากับภาษาของตนเอง GECOM และ COMTRAN ตามลำดับ ในทางตรงกันข้ามInternational Computers and Tabulatorsวางแผนที่จะแทนที่ภาษา CODEL ด้วย COBOL [66]

ในขณะเดียวกัน RCA และ Sperry Rand ทำงานเพื่อสร้างคอมไพเลอร์ภาษาโคบอล โปรแกรมภาษาโคบอลชุดแรกดำเนินการเมื่อวันที่ 17 สิงหาคมบน RCA 501 [67] ในวันที่ 6 และ 7 ธันวาคม โปรแกรมภาษาโคบอลเดียวกัน (แม้ว่าจะมีการเปลี่ยนแปลงเล็กน้อย) รันบนคอมพิวเตอร์ RCA และคอมพิวเตอร์Univac ของเรมิงตัน-แรนด์ ซึ่งแสดงให้เห็นว่าสามารถเข้ากันได้ ประสบความสำเร็จ [68]

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

ภาษาโคบอลเป็นภาษาอุตสาหกรรมและไม่ใช่ทรัพย์สินของบริษัทหรือกลุ่มบริษัทใดๆ หรือขององค์กรหรือกลุ่มองค์กรใดๆ

ไม่มีการรับประกันไม่ว่าโดยชัดแจ้งหรือโดยนัย โดยผู้สนับสนุนใดๆ หรือโดยคณะกรรมการ CODASYL COBOL เกี่ยวกับความถูกต้องและการทำงานของระบบการเขียนโปรแกรมและภาษา นอกจากนี้ ผู้มีส่วนร่วมหรือคณะกรรมการจะไม่รับผิดชอบใดๆ ในส่วนที่เกี่ยวข้อง ผู้เขียนและผู้ถือลิขสิทธิ์ของเนื้อหาที่มีลิขสิทธิ์ที่ใช้ในที่นี้มีดังนี้:

FLOW-MATIC (เครื่องหมายการค้าของ Unisys Corporation), การเขียนโปรแกรมสำหรับ UNIVAC (R) I และ II, Data Automation Systems, ลิขสิทธิ์ปี 1958, 1959 โดย Unisys Corporation; IBM Commercial Translator Form No. F28-8013, ลิขสิทธิ์ 1959 โดย IBM; ข้อเท็จจริง DSI 27A5260-2760 ลิขสิทธิ์ 1960 โดย Minneapolis-Honeywell

พวกเขาอนุญาตให้ใช้วัสดุนี้โดยเฉพาะทั้งหมดหรือบางส่วนในข้อกำหนดของ COBOL การอนุญาตดังกล่าวขยายไปถึงการทำซ้ำและการใช้ข้อกำหนดภาษาโคบอลในคู่มือการเขียนโปรแกรมหรือสิ่งพิมพ์ที่คล้ายคลึงกัน [69]

COBOL-61 ถึง COBOL-65

ไม่น่าเป็นไปได้ทีเดียวที่ Cobol จะอยู่ในช่วงปลายทศวรรษนี้

ไม่ระบุชื่อ มิถุนายน 1960 [70]

พบข้อบกพร่องเชิงตรรกะจำนวนมากในCOBOL 60 ทำให้ Charles Katzของ GE เตือนว่าไม่สามารถตีความได้อย่างชัดเจน คณะกรรมการระยะสั้นที่ไม่เต็มใจได้ออกกฎหมายให้ทำความสะอาดทั้งหมด และภายในเดือนมีนาคม 2506 มีรายงานว่าไวยากรณ์ของ COBOL นั้นสามารถกำหนดได้เหมือนกับ ของ ALGOLถึงแม้ว่าความคลุมเครือของความหมายจะยังคงอยู่ [66]

คอมไพเลอร์ภาษาโคบอลยุคแรกนั้นมีความดั้งเดิมและช้า การประเมินของกองทัพเรือสหรัฐฯ ปี 1962 พบความเร็วในการรวบรวม 3-11 คำสั่งต่อนาที กลางปี ​​1964 ข้อความเหล่านี้เพิ่มขึ้นเป็น 11–1000 ข้อความต่อนาที พบว่าการเพิ่มหน่วยความจำจะเพิ่มความเร็วได้อย่างมาก และค่าใช้จ่ายในการรวบรวมนั้นแตกต่างกันอย่างมาก: ต้นทุนต่อคำสั่งอยู่ระหว่าง 0.23 ถึง 18.91 ดอลลาร์ [71]

ปลายปี 2505 IBM ประกาศว่า COBOL จะเป็นภาษาหลักในการพัฒนา และการพัฒนา COMTRAN จะยุติลง [71]

ข้อกำหนดภาษาโคบอลได้รับการแก้ไขสามครั้งในห้าปีหลังจากการตีพิมพ์ COBOL-60 ถูกแทนที่ในปี 1961 โดย COBOL-61 สิ่งนี้ถูกแทนที่ด้วยข้อกำหนดเพิ่มเติมของ COBOL-61 ในปี 1963 ซึ่งแนะนำสิ่งอำนวยความสะดวกในการคัดแยกและเขียนรายงาน [72] สิ่งอำนวยความสะดวกเพิ่มเติมแก้ไขข้อบกพร่องที่ระบุโดย Honeywell ในช่วงปลายปี 2502 ในจดหมายถึงคณะกรรมการระยะสั้น [67] COBOL Edition 1965 ทำให้เกิดความกระจ่างเพิ่มเติมเกี่ยวกับข้อกำหนดและแนะนำสิ่งอำนวยความสะดวกสำหรับการจัดการไฟล์และตารางการจัดเก็บข้อมูลขนาดใหญ่ [73]

โคบอล-68

ความพยายามเริ่มสร้างมาตรฐานภาษาโคบอลเพื่อเอาชนะความไม่ลงรอยกันระหว่างเวอร์ชันต่างๆ ปลายปี 2505 ทั้ง ISO และ United States of America Standards Institute (ปัจจุบันคือANSI ) ได้จัดตั้งกลุ่มเพื่อสร้างมาตรฐาน ANSI ผลิตUSA Standard COBOL X3.23ในเดือนสิงหาคม พ.ศ. 2511 ซึ่งกลายเป็นรากฐานที่สำคัญสำหรับรุ่นต่อ ๆ ไป [74]เวอร์ชันนี้เป็นที่รู้จักในชื่อ American National Standard (ANS) COBOL และได้รับการรับรองโดย ISO ในปี 1972 [75]

โคบอล-74

ภายในปี 1970 ภาษาโคบอลได้กลายเป็นภาษาโปรแกรมที่ใช้กันอย่างแพร่หลายมากที่สุดในโลก [76]

คณะกรรมการภาษาโปรแกรม CODASYL กำลังทำงานเพื่อปรับปรุงภาษาโดยไม่ขึ้นกับคณะกรรมการ ANSI พวกเขาอธิบายเวอร์ชันใหม่ในปี 1968, 1969, 1970 และ 1973 รวมถึงการเปลี่ยนแปลงต่างๆ เช่น การสื่อสารระหว่างโปรแกรมใหม่ การดีบักและการรวมไฟล์ ตลอดจนคุณสมบัติการจัดการสตริงและการรวมไลบรารี ที่ได้รับการปรับปรุง [77] แม้ว่า CODASYL จะเป็นอิสระจากคณะกรรมการ ANSI แต่ ANSI ของCODASYL Journal of Developmentถูกใช้โดย ANSI เพื่อระบุคุณลักษณะที่ได้รับความนิยมเพียงพอที่จะรับประกันการใช้งาน [78] คณะกรรมการภาษาโปรแกรมยังประสานงานกับECMAและคณะกรรมการมาตรฐานภาษาโคบอลของญี่ปุ่นอีกด้วย [77]

อย่างไรก็ตาม คณะกรรมการภาษาโปรแกรมมิ่งเป็นที่รู้จักดี รองประธานาธิบดี วิลเลียม ไรน์ฮูลส์ บ่นว่าสองในสามของชุมชนโคบอลไม่รู้เรื่องการดำรงอยู่ของคณะกรรมการ นอกจากนี้ยังยากจน ขาดเงินทุนในการทำเอกสารสาธารณะ เช่น รายงานการประชุมและเปลี่ยนแปลงข้อเสนอ มีให้โดยเสรี [79]

ในปีพ.ศ. 2517 ANSI ได้เผยแพร่เวอร์ชันปรับปรุงของ (ANS) COBOL ซึ่งมีคุณลักษณะใหม่ๆ เช่นfile OrganisationคำDELETEสั่ง[80]และโมดูลการแบ่งส่วน [81] คุณลักษณะที่ถูกลบรวมถึงNOTEคำสั่งEXAMINEคำสั่ง (ซึ่งถูกแทนที่ด้วยINSPECT) และโมดูลการเข้าถึงโดยสุ่มที่กำหนดโดยผู้ดำเนินการ (ซึ่งถูกแทนที่ด้วยโมดูล I/O แบบต่อเนื่องและแบบสัมพันธ์ใหม่) สิ่งเหล่านี้ประกอบด้วยการเปลี่ยนแปลง 44 ซึ่งทำให้ข้อความที่มีอยู่ไม่สอดคล้องกับมาตรฐานใหม่ [82] ผู้เขียนรายงานถูกกำหนดให้ถอดออกจากภาษาโคบอล แต่ถูกเรียกตัวกลับคืนมาก่อนที่จะมีการเผยแพร่มาตรฐาน [83] [84]ต่อมา ISO ได้นำมาตรฐานที่ปรับปรุงแล้วมาใช้ในปี 1978 [75]

โคบอล-85

ในเดือนมิถุนายน พ.ศ. 2521 งานเริ่มแก้ไข COBOL-74 มาตรฐานที่เสนอ (ปกติเรียกว่า COBOL-80) แตกต่างอย่างมากจากมาตรฐานก่อนหน้านี้ ทำให้เกิดความกังวลเกี่ยวกับความไม่ลงรอยกันและต้นทุนการแปลง ในเดือนมกราคม พ.ศ. 2524 โจเซฟ ที. โบรฟี รองประธานอาวุโสฝ่ายประกันภัยการเดินทาง ขู่ว่าจะฟ้องคณะกรรมการมาตรฐานเพราะไม่รองรับ COBOL-74 ขึ้นไป Mr. Brophy อธิบายการแปลงรหัสฐาน 40 ล้านบรรทัดก่อนหน้านี้ว่า "ไม่เกิดประสิทธิผล" และ "สิ้นเปลืองทรัพยากรโปรแกรมเมอร์ของเราโดยเปล่าประโยชน์" [85] ต่อมาในปีนั้นสมาคมการจัดการการประมวลผลข้อมูล (DPMA) กล่าวว่า "ไม่เห็นด้วยกับมาตรฐานใหม่นี้อย่างยิ่ง" โดยอ้างถึงต้นทุนการแปลงที่ "ต้องห้าม" และการปรับปรุงที่ "บังคับกับผู้ใช้"[87]

ในช่วงการตรวจสอบสาธารณะครั้งแรก คณะกรรมการได้รับคำตอบ 2,200 ฉบับ โดย 1,700 ฉบับเป็นจดหมายเชิงลบ [88] คำตอบอื่นๆ เป็นการวิเคราะห์โดยละเอียดเกี่ยวกับผลกระทบที่ COBOL-80 จะมีต่อระบบของพวกเขา ค่าใช้จ่ายในการแปลงถูกคาดการณ์ว่าอย่างน้อย 50 เซ็นต์ต่อบรรทัดของรหัส มีคำตอบน้อยกว่าโหลที่เห็นด้วยกับมาตรฐานที่เสนอ [89]

ISO TC97-SC5 ติดตั้งในปี 1979 โดยกลุ่มผู้เชี่ยวชาญ COBOL ระหว่างประเทศตามความคิดริเริ่มของWim Ebbinkhuijsen กลุ่มประกอบด้วยผู้เชี่ยวชาญภาษาโคบอลต์จากหลายประเทศ รวมทั้งสหรัฐอเมริกา เป้าหมายของมันคือเพื่อให้เกิดความเข้าใจและความเคารพซึ่งกันและกันระหว่าง ANSI และส่วนอื่นๆ ของโลก โดยคำนึงถึงความจำเป็นของคุณลักษณะใหม่ของภาษาโคบอล หลังจากสามปี ISO ได้เปลี่ยนสถานะของกลุ่มเป็น Working Group อย่างเป็นทางการ: WG 4 COBOL กลุ่มนี้เป็นเจ้าของหลักและพัฒนามาตรฐานโคบอล ซึ่ง ANSI ดำเนินการตามข้อเสนอส่วนใหญ่

ในปีพ.ศ. 2526 DPMA ถอนการคัดค้านมาตรฐาน โดยอ้างถึงการตอบสนองของคณะกรรมการต่อความกังวลของสาธารณชน ในปีเดียวกันนั้น ผลการศึกษาของสำนักงานมาตรฐานแห่งชาติสรุปว่ามาตรฐานที่เสนอจะมีปัญหาเล็กน้อย [87] [90]หนึ่งปีต่อมาธ.ค.ได้เปิดตัวVAX/VMS COBOL-80 ซึ่งสังเกตเห็นว่าการแปลงโปรแกรม COBOL-74 ทำให้เกิดปัญหาเล็กน้อย คำสั่ง ใหม่EVALUATEและอินไลน์PERFORMได้รับการตอบรับเป็นอย่างดีและปรับปรุงประสิทธิภาพการทำงาน ต้องขอบคุณโฟลว์การควบคุมและ การ ดีบัก ที่ ง่ายขึ้น [91]

การตรวจสอบสาธารณะครั้งที่สองดึงคำตอบออกมาอีก 1,000 คน (ส่วนใหญ่เป็นเชิงลบ) ในขณะที่ครั้งล่าสุดเข้ามาเพียง 25 ครั้ง ซึ่งในช่วงเวลาดังกล่าวได้มีการกล่าวถึงข้อกังวลมากมาย [87]

ในปีพ.ศ. 2528 คณะทำงาน ISO 4 ได้ยอมรับเวอร์ชันของมาตรฐานที่เสนอโดย ANSI ได้ทำการเปลี่ยนแปลงหลายอย่างและกำหนดให้เป็นมาตรฐาน ISO ใหม่ COBOL 85 ซึ่งเผยแพร่เมื่อปลายปี พ.ศ. 2528

หกสิบคุณสมบัติมีการเปลี่ยนแปลงหรือเลิกใช้และมี การเพิ่ม [ quantify ] จำนวน มากเช่น: [92] [93]

  • ตัว ยุติขอบเขต ( END-IF, END-PERFORM, END-READ, ฯลฯ)
  • โปรแกรมย่อยที่ซ้อนกัน
  • CONTINUE, คำสั่งห้ามดำเนินการ
  • EVALUATE, คำสั่งสวิตช์
  • INITIALIZEคำสั่งที่สามารถกำหนดกลุ่มข้อมูลให้เป็นค่าเริ่มต้นได้
  • เนื้อหาลูป อินไลน์PERFORM– ก่อนหน้านี้ เนื้อหาลูปต้องระบุในขั้นตอนที่แยกต่างหาก
  • การแก้ไขการอ้างอิง ซึ่งอนุญาตให้เข้าถึงสตริงย่อย
  • รหัสสถานะ I/O

มาตรฐานใหม่นี้ได้รับการรับรองโดยหน่วยงานมาตรฐานแห่งชาติทั้งหมด รวมถึง ANSI [75]

การแก้ไขสองรายการตามมาในปี 1989 และ 1993 ครั้งแรกที่มีการแนะนำฟังก์ชันที่แท้จริงและการแก้ไขอื่นๆ [75]

COBOL 2002 และ COBOL เชิงวัตถุ

ในปี 1997 Gartner Groupประมาณการว่ามีโคบอลอยู่ทั้งหมด 2 แสนล้านสายงาน ซึ่งดำเนินการ 80% ของโครงการธุรกิจทั้งหมด [94] [ ต้องการแหล่งที่ดีกว่า ]

ในช่วงต้นทศวรรษ 1990 งานเริ่มเพิ่มการวางแนววัตถุในการแก้ไขฉบับเต็มครั้งต่อไปของ COBOL คุณลักษณะเชิงวัตถุนำมาจากC ++และSmalltalk [2] [3] การประเมินเบื้องต้นคือการทำให้การแก้ไขนี้แล้วเสร็จภายในปี 1997 และ ISO Committee Draft (CD) สามารถใช้ได้ในปี 1997 ผู้จำหน่ายบางราย (รวมถึงMicro Focus , FujitsuและIBM ) ได้แนะนำไวยากรณ์เชิงวัตถุตาม ร่างของการแก้ไขฉบับเต็ม มาตรฐาน ISO ที่ได้รับอนุมัติขั้นสุดท้ายได้รับการอนุมัติและเผยแพร่ในปลายปี 2545 [95]

Fujitsu/GTSoftware, [96] Micro Focus และRainCodeแนะนำคอมไพเลอร์ COBOL เชิงวัตถุที่กำหนดเป้าหมายไปที่. NET Framework

มีคุณลักษณะใหม่อื่นๆ อีกมากมาย ซึ่งหลายๆ อย่างเคยอยู่ในCODASYL COBOL Journal of Developmentตั้งแต่ปี 1978 และพลาดโอกาสที่จะรวมอยู่ใน COBOL-85 [97]คุณสมบัติอื่น ๆ เหล่านี้รวม: [98] [99]

corrigendaสามรายการได้รับการตีพิมพ์สำหรับมาตรฐาน: สองใน 2006 และอีกหนึ่งใน 2009 [100]

โคบอล 2014

ระหว่างปี พ.ศ. 2546 ถึง พ.ศ. 2552 มีการสร้างรายงานทางเทคนิคสามฉบับที่อธิบายการสรุปอ็อบเจ็กต์ การประมวลผลXML และ คลาสการรวบรวมสำหรับ COBOL [100]

โคบอล 2002 ประสบปัญหาจากการสนับสนุนที่ไม่ดี: ไม่มีคอมไพเลอร์ใดที่รองรับมาตรฐานนี้อย่างสมบูรณ์ Micro Focus พบว่าเกิดจากความต้องการของผู้ใช้ที่ไม่เพียงพอสำหรับคุณลักษณะใหม่นี้ และเนื่องจากการยกเลิก ชุดทดสอบ NISTซึ่งเคยใช้ในการทดสอบความสอดคล้องของคอมไพเลอร์ กระบวนการกำหนดมาตรฐานยังพบว่าช้าและขาดทรัพยากร [11]

COBOL 2014 มีการเปลี่ยนแปลงดังต่อไปนี้: [102]

  • ผลลัพธ์ทางคณิตศาสตร์แบบพกพาถูกแทนที่ด้วยประเภทข้อมูลIEEE 754
  • มีการทำคุณสมบัติหลักให้เลือก เช่น สิ่งอำนวยความVALIDATEสะดวก ผู้เขียนรายงาน และสิ่งอำนวยความสะดวกในการจัดการหน้าจอ
  • วิธีการโอเวอร์โหลด
  • ตารางความจุแบบไดนามิก (คุณลักษณะที่หลุดจากร่างของ COBOL 2002) [103]

มรดก

โปรแกรมภาษาโคบอลต์ถูกใช้ทั่วโลกในรัฐบาลและภาคธุรกิจ และกำลังทำงานบนระบบ ปฏิบัติการที่หลากหลาย เช่นz/OS , z/VSE , VME , Unix , OpenVMSและWindows ในปี 1997 Gartner Groupรายงานว่า 80% ของธุรกิจทั่วโลกใช้ภาษาโคบอล (COBOL) โดยมีโค้ดมากกว่า 2 แสนล้านบรรทัด และมีการเขียนมากกว่า 5 พันล้านบรรทัดต่อปี [104]

ใกล้ปลายศตวรรษที่ 20 ปัญหาปี 2000 (Y2K) เป็นจุดสนใจของความพยายามในการเขียนโปรแกรมภาษาโคบอลที่มีนัยสำคัญ ซึ่งบางครั้งเกิดจากโปรแกรมเมอร์คนเดิมที่เคยออกแบบระบบเมื่อหลายสิบปีก่อน ระดับความพยายามเฉพาะที่จำเป็นในการแก้ไขรหัส COBOL นั้นมา จาก ใคร? ]ถึง COBOL เชิงธุรกิจจำนวนมาก เนื่องจากแอปพลิเคชันทางธุรกิจใช้วันที่เป็นจำนวนมาก และใช้กับช่องข้อมูลที่มีความยาวคงที่ หลังจากความพยายามในการล้างข้อมูลลงในโปรแกรมเหล่านี้สำหรับ Y2K การสำรวจในปี 2546 พบว่ายังคงมีการใช้งานจำนวนมาก [105] ผู้เขียนกล่าวว่าข้อมูลการสำรวจชี้ให้เห็นว่า "ความสำคัญของ Cobol ลดลงอย่างค่อยเป็นค่อยไปในการพัฒนาแอปพลิเคชันในช่วง 10 ปี [ต่อไปนี้] เว้นแต่ ... การรวมเข้ากับภาษาและเทคโนโลยีอื่น ๆ จะสามารถนำมาใช้ได้" [16]

ในปี 2549 และ 2555 ผลสำรวจของ Computerworld (จากผู้อ่าน 352 คน) พบว่ากว่า 60% ขององค์กรใช้ COBOL (มากกว่าC++และVisual Basic .NET ) และครึ่งหนึ่ง COBOL ถูกใช้สำหรับซอฟต์แวร์ภายในส่วนใหญ่ [9] [107] 36% ของผู้จัดการกล่าวว่าพวกเขาวางแผนที่จะย้ายจาก COBOL และ 25% บอกว่าพวกเขาต้องการถ้าราคาถูกกว่า ในทางกลับกัน บางธุรกิจได้ย้ายระบบของตนจากเมนเฟรมที่มีราคาแพงไปยังระบบที่ถูกกว่าและทันสมัยกว่า ในขณะที่ยังคงรักษาโปรแกรมภาษาโคบอลไว้ [9]

คำให้การต่อหน้าสภาผู้แทนราษฎรในปี 2559 ระบุว่า COBOL ยังคงใช้อยู่โดยหน่วยงานของรัฐบาลกลางหลายแห่ง [108] สำนักข่าวรอยเตอร์รายงานในปี 2560 ว่า 43% ของระบบธนาคารยังคงใช้ COBOL โดยมีการใช้รหัส COBOL มากกว่า 220 พันล้านบรรทัด [19]

ภายในปี 2019 จำนวนโปรแกรมเมอร์ภาษาโคบอลลดลงอย่างรวดเร็วเนื่องจากการเกษียณอายุ นำไปสู่ช่องว่างด้านทักษะที่ใกล้จะเกิดขึ้นในธุรกิจและองค์กรภาครัฐที่ยังคงใช้ระบบเมนเฟรมสำหรับการประมวลผลธุรกรรมที่มีปริมาณมาก ความพยายามที่จะเขียนระบบใหม่ในภาษาที่ใหม่กว่านั้นได้รับการพิสูจน์แล้วว่ามีราคาแพงและมีปัญหา เช่นเดียวกับการจ้างคนภายนอกเพื่อดูแลโค้ด ดังนั้นข้อเสนอในการฝึกอบรมผู้คนในภาษาโคบอลมากขึ้นจึงได้รับการสนับสนุน [110]

ในช่วงการระบาดใหญ่ของ COVID-19และการว่างงานที่เพิ่มขึ้นตามมา หลายรัฐในสหรัฐฯ รายงานการขาดแคลนโปรแกรมเมอร์ภาษาโคบอลที่มีทักษะสูง เพื่อสนับสนุนระบบเดิมที่ใช้สำหรับการจัดการผลประโยชน์การว่างงาน หลายระบบเหล่านี้เคยอยู่ในขั้นตอนของการแปลงเป็นภาษาโปรแกรมที่ทันสมัยกว่าก่อนการระบาดใหญ่ แต่กระบวนการนี้ต้องถูกระงับ [111]ในทำนองเดียวกัน หน่วยงานสรรพากร ของสหรัฐฯ ได้เร่งแก้ไข ไฟล์หลักรายบุคคลตามภาษาโคบอลเพื่อแจกจ่ายการชำระเงินหลายสิบล้านรายการที่ได้รับมอบอำนาจจากพระราชบัญญัติความช่วยเหลือ การบรรเทาทุกข์ และความมั่นคงทางเศรษฐกิจ ของโคโรนา ไวรัส [112]

คุณสมบัติ

ไวยากรณ์

ภาษาโคบอลมีรูปแบบคล้ายภาษาอังกฤษ ซึ่งใช้เพื่ออธิบายเกือบทุกอย่างในโปรแกรม ตัวอย่างเช่น เงื่อนไขสามารถแสดงเป็น   หรืออย่างรัดกุมมากขึ้น   เป็น  หรือ  เงื่อนไขที่ซับซ้อนมากขึ้นสามารถ "ย่อ" ได้โดยการลบเงื่อนไขและตัวแปรซ้ำ ตัวอย่างเช่น     สามารถย่อเป็น. เพื่อสนับสนุนไวยากรณ์ที่เหมือนภาษาอังกฤษนี้ COBOL มีคำหลักมากกว่า300 คำ [113] [c]คีย์เวิร์ดบางคำเป็นคำที่ใช้แทนคำง่ายๆ หรือใช้คำเดียวกันเป็นพหูพจน์ ซึ่งให้ข้อความและประโยคที่เหมือนภาษาอังกฤษมากขึ้น เช่น the และคำหลัก สามารถใช้แทนกันได้ และสามารถและ และและและx IS GREATER THAN yx GREATER yx > ya > b AND a > c OR a = da > b AND c OR = dINOFISAREVALUEVALUES

โปรแกรมภาษาโคบอลแต่ละโปรแกรมประกอบด้วยคำศัพท์พื้นฐานสี่รายการ : คำ อักษร สตริงอักขระรูปภาพ (ดู§ ประโยครูปภาพ ) และตัวคั่น คำรวมถึงคำสงวนและตัวระบุที่ผู้ใช้กำหนด มีความยาวสูงสุด 31 อักขระ และอาจรวมถึงตัวอักษร ตัวเลข ขีดกลาง และขีดล่าง ตัวอักษรประกอบด้วยตัวเลข (เช่น12) และสตริง (เช่น'Hello!') [115]ตัวคั่นรวมถึงอักขระช่องว่างและเครื่องหมายจุลภาคและเซมิโคลอนตามด้วยช่องว่าง [116]

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

ภาษาเมตา

ไวยากรณ์ของภาษาโคบอลมักจะอธิบายด้วยภาษาเมตาที่ไม่ซ้ำกันโดยใช้เครื่องหมายวงเล็บปีกกา วงเล็บ แถบและการขีดเส้นใต้ ภาษาเมตาได้รับการพัฒนาสำหรับข้อกำหนดภาษาโคบอลดั้งเดิม แม้ว่ารูปแบบ Backus–Naurมีอยู่ในขณะนั้น แต่คณะกรรมการไม่เคยได้ยินเรื่องนี้มาก่อน [117]

องค์ประกอบของภาษาเมตาของโคบอล
องค์ประกอบ รูปร่าง การทำงาน
เมืองหลวงทั้งหมด ตัวอย่าง คำสงวน
ขีดเส้นใต้ ตัวอย่าง คำสงวนเป็นคำบังคับ
จัดฟัน { } สามารถเลือกได้เพียงตัวเลือกเดียวเท่านั้น
วงเล็บ [] สามารถเลือกศูนย์หรือหนึ่งตัวเลือกได้
วงรี ... องค์ประกอบก่อนหน้าสามารถทำซ้ำได้
บาร์ {| |} สามารถเลือกได้ตั้งแต่หนึ่งตัวเลือกขึ้นไป ตัวเลือกใดก็ได้ที่เลือกได้เพียงครั้งเดียว
[| |] อาจเลือกตัวเลือกศูนย์หรือมากกว่า ตัวเลือกใดก็ได้ที่เลือกได้เพียงครั้งเดียว

ตัวอย่างเช่น ให้พิจารณาคำอธิบายต่อไปนี้ของADDคำสั่ง:

คำอธิบายนี้อนุญาตให้ใช้ตัวแปรต่อไปนี้:

เพิ่ม 1 ถึง x 
เพิ่ม 1 ,  a ,  b  ถึง x  ปัดเศษ,  y ,  z  ปัดเศษ

เพิ่ม a ,  b  ถึง c 
    บน ขนาด ข้อผิดพลาด
DISPLAY "Error" END-ADD        


เพิ่ม ถึง b  ไม่แสดงข้อผิดพลาดขนาด" 
    ไม่มีข้อผิดพลาด" บนจอ แสดงผล ข้อผิดพลาดขนาด"ข้อผิดพลาด"  
        
      
        

รูปแบบโค้ด

ภาษาโคบอลสามารถเขียนได้สองรูปแบบ: คงที่ (ค่าเริ่มต้น) หรือฟรี ในรูปแบบคงที่ รหัสจะต้องถูกจัดวางให้พอดีกับบางพื้นที่ จนถึง COBOL 2002 สิ่งเหล่านี้คือ:

ชื่อ คอลัมน์ การใช้งาน
พื้นที่หมายเลขลำดับ 1–6 เดิมทีใช้สำหรับหมายเลขบัตร/บรรทัด (อำนวยความสะดวกในการจัดเรียงบัตรเจาะแบบกลไกเพื่อให้แน่ใจว่ามีลำดับรหัสโปรแกรมที่ต้องการหลังจากแก้ไข/จัดการด้วยตนเอง) พื้นที่นี้จะถูกละเว้นโดยคอมไพเลอร์
พื้นที่ตัวบ่งชี้ 7 อนุญาตให้ใช้อักขระต่อไปนี้ที่นี่:
  • *– คอมเมนต์ไลน์
  • /– บรรทัดความคิดเห็นที่จะพิมพ์ในหน้าใหม่ของรายการแหล่งที่มา
  • -– เส้นต่อเนื่อง โดยที่คำหรือตัวอักษรจากบรรทัดที่แล้วยังคงดำเนินต่อไป
  • D– เปิดใช้งานสายในโหมดดีบักซึ่งจะถูกละเว้น
พื้นที่ A 8–11 ประกอบด้วย: DIVISION, SECTIONและส่วนหัวของขั้นตอน; หมายเลขระดับ 01 และ 77 และตัวอธิบายไฟล์/รายงาน
พื้นที่ B 12–72 ไม่อนุญาตให้ใช้รหัสอื่นในพื้นที่ A
พื้นที่ชื่อโปรแกรม 73– ในอดีตจนถึงคอลัมน์ 80 สำหรับไพ่ที่เจาะแล้ว ใช้เพื่อระบุโปรแกรมหรือลำดับไพ่ที่เป็นของ

ในโคบอลต์ 2002 พื้นที่ A และ B ถูกรวมเข้าด้วยกันเพื่อสร้างพื้นที่ข้อความของโปรแกรม ซึ่งตอนนี้จะสิ้นสุดที่คอลัมน์ที่กำหนดโดยผู้ดำเนินการ [118]

COBOL 2002 ยังแนะนำโค้ดรูปแบบอิสระอีกด้วย สามารถวางโค้ดรูปแบบอิสระในคอลัมน์ใดก็ได้ของไฟล์ เช่นเดียวกับในภาษาโปรแกรมที่ใหม่กว่า ความคิดเห็นถูกระบุโดยใช้*>ซึ่งสามารถวางไว้ที่ใดก็ได้และยังสามารถใช้ในซอร์สโค้ดรูปแบบคงที่ได้อีกด้วย ไม่มีเส้นต่อเนื่อง และ>>PAGEคำสั่งจะแทนที่/ตัวบ่งชี้ [118]

แผนกบัตรประจำตัว

ส่วนรหัสระบุเอนทิตีรหัสต่อไปนี้และมีคำจำกัดความของคลาสหรืออินเทอร์เฟซ

การเขียนโปรแกรมเชิงวัตถุ

คลาสและอินเทอร์เฟซอยู่ในภาษาโคบอลต์ตั้งแต่ปี 2545 คลาสมีอ็อบเจ็กต์จากโรงงาน ซึ่งมีเมธอดและตัวแปรของคลาส และอ็อบเจ็กต์อินสแตนซ์ ซึ่งประกอบด้วยเมธอดและตัวแปรของอินสแตนซ์ [119]การสืบทอดและส่วนต่อประสานให้ความหลากหลาย การสนับสนุนสำหรับการเขียนโปรแกรมทั่วไปมีให้ผ่านคลาสที่มีการกำหนดพารามิเตอร์ ซึ่งสามารถอินสแตนซ์เพื่อใช้คลาสหรืออินเทอร์เฟซใดก็ได้ ออบเจ็กต์จะถูกเก็บไว้เป็นข้อมูลอ้างอิงซึ่งอาจจำกัดไว้เฉพาะบางประเภท มีสองวิธีในการเรียกเมธอด: INVOKEคำสั่ง ซึ่งทำหน้าที่คล้ายกับCALLหรือผ่านการเรียกใช้เมธอดอินไลน์ ซึ่งคล้ายกับการใช้ฟังก์ชัน [120]

*> สิ่งเหล่านี้เทียบเท่า 
เรียกใช้ my  -class  "foo" การส่ง  คืนvar MOVE  my-class :: "foo" TO var *> การเรียกใช้เมธอดอินไลน์
    

ภาษาโคบอลไม่มีวิธีการซ่อนวิธีการ อย่างไรก็ตาม ข้อมูลคลาสสามารถซ่อนได้โดยการประกาศโดยไม่มีส่วนPROPERTYคำสั่ง ซึ่งทำให้ผู้ใช้ไม่มีทางเข้าถึงข้อมูลได้ [121] เพิ่ม วิธีการโอเวอร์โหลดใน COBOL 2014 [122]

กองสิ่งแวดล้อม

แผนกสภาพแวดล้อมประกอบด้วยส่วนการกำหนดค่าและส่วนอินพุต-เอาท์พุต ส่วนการกำหนดค่าใช้เพื่อระบุคุณสมบัติของตัวแปร เช่น เครื่องหมายสกุลเงิน ภาษา และชุดอักขระ ส่วนอินพุต-เอาต์พุตประกอบด้วยข้อมูลที่เกี่ยวข้องกับไฟล์

ไฟล์

ภาษาโคบอลต์สนับสนุนรูปแบบไฟล์สามรูปแบบหรือองค์กร : ตามลำดับ จัดทำดัชนี และสัมพันธ์กัน ในไฟล์ที่เรียงตามลำดับ เร็กคอร์ดจะต่อเนื่องกันและต้องถูกข้ามไปตามลำดับเช่นเดียวกับรายการที่เชื่อมโยง ไฟล์ที่ทำดัชนีมีดัชนีอย่างน้อยหนึ่งรายการซึ่งอนุญาตให้เข้าถึงเร็กคอร์ดแบบสุ่มและสามารถจัดเรียงได้ แต่ละเร็กคอร์ดต้องมีคีย์ที่ไม่ซ้ำแต่คีย์อื่นทางเลือกเร็กคอร์ดไม่จำเป็นต้องไม่ซ้ำกัน การใช้งานไฟล์ที่จัดทำดัชนีจะแตกต่างกันไปตามผู้ขาย แม้ว่าการใช้งานทั่วไป เช่นC-ISAMและVSAM จะขึ้นอยู่กับ ISAMของ IBM. ไฟล์สัมพัทธ์ เช่น ไฟล์ที่จัดทำดัชนี มีคีย์บันทึกเฉพาะ แต่ไม่มีคีย์สำรอง คีย์ของเร็กคอร์ดที่เกี่ยวข้องคือตำแหน่งลำดับ ตัวอย่างเช่น ระเบียนที่ 10 มีคีย์เท่ากับ 10 ซึ่งหมายความว่าการสร้างระเบียนที่มีคีย์เป็น 5 อาจต้องมีการสร้าง (ว่าง) ระเบียนที่อยู่ข้างหน้า ไฟล์สัมพัทธ์ยังอนุญาตให้เข้าถึงทั้งแบบต่อเนื่องและแบบสุ่ม [123]

ส่วนขยายที่ไม่ได้มาตรฐานทั่วไปคือการจัดลำดับบรรทัดใช้ในการประมวลผลไฟล์ข้อความ เร็กคอร์ดในไฟล์ถูกยกเลิกโดยการขึ้นบรรทัดใหม่และอาจมีความยาวต่างกัน [124]

การแบ่งข้อมูล

การแบ่งข้อมูลแบ่งออกเป็น 6 ส่วนซึ่งประกาศรายการต่างๆ ได้แก่ ส่วนไฟล์ สำหรับบันทึกไฟล์ ส่วนการจัดเก็บการทำงานสำหรับตัวแปรคงที่ ; ส่วน local-storage สำหรับตัวแปรอัตโนมัติ ; ส่วนเชื่อมโยงสำหรับพารามิเตอร์และค่าส่งคืน ส่วนรายงานและส่วนหน้าจอ สำหรับอินเทอร์เฟซผู้ใช้แบบข้อความ

ข้อมูลรวม

รายการข้อมูลในภาษาโคบอลต์ได้รับการประกาศตามลำดับชั้นโดยใช้หมายเลขระดับซึ่งระบุว่ารายการข้อมูลเป็นส่วนหนึ่งของรายการอื่นหรือไม่ รายการที่มีหมายเลขระดับสูงกว่าจะอยู่ภายใต้รายการที่มีระดับต่ำกว่า รายการข้อมูลระดับบนสุดที่มีหมายเลขระดับ 1 เรียกว่าเร็กคอร์ด รายการที่มีข้อมูลรวมรองจะเรียกว่ารายการกลุ่ม ที่ไม่เรียกว่ารายการพื้นฐาน ตัวเลขระดับที่ใช้อธิบายรายการข้อมูลมาตรฐานอยู่ระหว่าง 1 ถึง 49 [125] [126]

       01   บางบันทึก                    *> รายการบันทึกกลุ่มรวม
05   NUM PIC 9(10) . *> รายการเบื้องต้น05   วันที่ *> รวมรายการบันทึกกลุ่ม (ย่อย) 10   ปีPIC 9(4) . *> รายการเบื้องต้น10   เดือนPIC 99 . *> รายการพื้นฐาน10   วันPIC 99 . *> รายการพื้นฐาน                         
                             
                     
                      
                        

ในตัวอย่างข้างต้น รายการระดับประถมศึกษาnumและรายการกลุ่มthe-dateเป็นรายการย่อยของบันทึกsome-recordในขณะที่รายการระดับประถมศึกษาthe-year, the-monthและ เป็นส่วนหนึ่ง ของ the-dayรายการกลุ่มthe-date

รายการรองสามารถแก้ความกำกวมด้วยIN(หรือOF) คำสำคัญ ตัวอย่างเช่น ลองพิจารณาโค้ดตัวอย่างด้านบนพร้อมกับตัวอย่างต่อไปนี้:

       01   วันที่ขาย 
05   ปีPIC 9(4) . 05   เดือนPIC 99 . 05   วันนั้นPIC 99 .                  
                 
                   

ชื่อthe-year, the-month, และthe-dayมีความคลุมเครือในตัวเอง เนื่องจากมีการกำหนดรายการข้อมูลมากกว่าหนึ่งรายการด้วยชื่อเหล่านั้น ในการระบุรายการข้อมูลเฉพาะ เช่น หนึ่งในรายการที่อยู่ในsale-dateกลุ่ม โปรแกรมเมอร์จะใช้the-year IN sale-date(หรือเทียบเท่าthe-year OF sale-date) (ไวยากรณ์นี้คล้ายกับ "เครื่องหมายจุด" ที่สนับสนุนโดยภาษาร่วมสมัยส่วนใหญ่)

ระดับข้อมูลอื่นๆ

หมายเลขระดับ 66 ใช้เพื่อประกาศการจัดกลุ่มใหม่ของรายการที่กำหนดไว้ก่อนหน้านี้ โดยไม่คำนึงว่ารายการเหล่านั้นมีโครงสร้างอย่างไร ระดับข้อมูลนี้ ซึ่งถูกอ้างถึงโดยRENAMESอนุประโยค ที่เกี่ยวข้อง นั้น ไม่ค่อยได้ใช้[127]และประมาณปี 1988 มักพบในโปรแกรมเก่า ความสามารถในการละเว้นข้อมูลโครงสร้างแบบลำดับชั้นและแบบลอจิคัลหมายความว่าไม่แนะนำให้ใช้และการติดตั้งจำนวนมากห้ามการใช้งาน [128]

       01   ลูกค้า-บันทึก. 
05   cust-key PIC X(10) . 05   ชื่อสกุล. 10   นามสกุลPIC X(30) . 10   นามสกุลPIC X(30) . 05   cust-dob PIC 9(8) . 05   ดุลบัญชีเงินฝาก PIC 9(7)V99 . 66   cust-personal-details เปลี่ยนชื่อcust-name THRU cust-dob 66   cust-all-details เปลี่ยนชื่อcust-name THRU cust-balance                       
           
                
                 
                       
                   
           
             
                  

หมายเลขระดับ 77 ระบุว่ารายการเป็นแบบสแตนด์อโลน และในสถานการณ์ดังกล่าวจะเทียบเท่ากับหมายเลขระดับ 01 ตัวอย่างเช่น โค้ดต่อไปนี้ประกาศรายการข้อมูล 77 ระดับสองรายการproperty-nameและsales-regionซึ่งเป็นรายการข้อมูลที่ไม่ใช่กลุ่มที่ เป็นอิสระจาก (ไม่อยู่ภายใต้) รายการข้อมูลอื่น ๆ :

       77   ชื่อคุณสมบัติ      PIC X(80 ) 
77   เขตการขายPIC 9(5) .              

หมายเลขระดับ 88 ประกาศชื่อเงื่อนไข (เรียกว่าระดับ 88) ซึ่งจะเป็นจริงเมื่อรายการข้อมูลพาเรนต์มีค่าใดค่าหนึ่งที่ระบุไว้ในVALUEอนุประโยค [129]ตัวอย่างเช่น รหัสต่อไปนี้กำหนดสองรายการชื่อเงื่อนไขระดับ 88 ที่เป็นจริงหรือเท็จขึ้นอยู่กับค่าข้อมูลอักขระปัจจุบันของwage-typeรายการข้อมูล เมื่อรายการข้อมูลมีค่าของ'H', condition-name wage-is-hourlyจะเป็น true ในขณะที่เมื่อมีค่าของ'S'or 'Y', condition-name wage-is-yearlyจะเป็น true หากรายการข้อมูลมีค่าอื่น ทั้งสองชื่อเงื่อนไขจะเป็นเท็จ

       01   PIC X แบบค่าจ้าง           88   ค่าจ้างต่อชั่วโมงVALUE "H " 88   ค่าจ้างต่อปีมูลค่า"S" , "Y "
            
             

ประเภทข้อมูล

มาตรฐาน COBOL ให้ประเภทข้อมูลต่อไปนี้: [130]

ประเภทข้อมูล ตัวอย่างการประกาศ หมายเหตุ
ตัวอักษร PIC A(30) อาจมีเฉพาะตัวอักษรหรือช่องว่าง
ตัวอักษรและตัวเลข PIC X(30) อาจมีอักขระใด ๆ
บูลีน PIC 1 USAGE BIT ข้อมูลที่จัดเก็บในรูปแบบ 0s และ 1s เป็นเลขฐานสอง
ดัชนี USAGE INDEX ใช้เพื่ออ้างอิงองค์ประกอบของตาราง
ระดับชาติ PIC N(30) คล้ายกับตัวอักษรและตัวเลข แต่ใช้ชุดอักขระเพิ่มเติม เช่นUTF-8
ตัวเลข PIC 9(5)V9(5) อาจมีเฉพาะตัวเลข
วัตถุ USAGE OBJECT REFERENCE อาจอ้างอิงถึงวัตถุหรือNULL
ตัวชี้ USAGE POINTER

ความปลอดภัยประเภทเป็นตัวแปรในภาษาโคบอล ข้อมูลตัวเลขจะถูกแปลงระหว่างการแทนค่าและขนาดต่างๆ โดยไม่โต้ตอบ และข้อมูลที่เป็นตัวอักษรและตัวเลขสามารถวางในรายการข้อมูลใดๆ ที่สามารถจัดเก็บเป็นสตริงได้ รวมถึงข้อมูลตัวเลขและกลุ่ม [131]ในทางตรงกันข้าม การอ้างอิงวัตถุและตัวชี้อาจถูกกำหนดจากรายการประเภทเดียวกันเท่านั้น และค่าของวัตถุเหล่านั้นอาจถูกจำกัดไว้เฉพาะบางประเภท [132]

ประโยครูปภาพ

อนุ ประโยคPICTURE(หรือPIC) คือสตริงของอักขระ ซึ่งแต่ละรายการแทนส่วนของรายการข้อมูลและสิ่งที่อาจมี อักขระรูปภาพบางตัวระบุประเภทของรายการและจำนวนอักขระหรือตัวเลขที่ใช้ในหน่วยความจำ ตัวอย่างเช่น a 9หมายถึงตัวเลขทศนิยม และ an Sหมายถึงรายการที่มีการเซ็นชื่อ อักขระรูปภาพอื่นๆ (เรียกว่าอักขระแทรกและแก้ไข ) ระบุวิธีจัดรูปแบบรายการ ตัวอย่างเช่น ชุดของ+อักขระกำหนดตำแหน่งของอักขระตลอดจนวิธีการวางตำแหน่งอักขระนำหน้าภายในข้อมูลอักขระสุดท้าย อักขระที่ไม่ใช่ตัวเลขด้านขวาสุดจะมีเครื่องหมายของรายการ ขณะที่ตำแหน่งอักขระอื่นๆ ที่สอดคล้องกับ a+ทางด้านซ้ายของตำแหน่งนี้จะมีช่องว่าง อักขระที่ซ้ำกันสามารถระบุให้กระชับยิ่งขึ้นได้โดยการระบุตัวเลขในวงเล็บหลังอักขระรูปภาพ เช่น9(7)เทียบเท่า9999999กับ ข้อมูลจำเพาะของ รูปภาพที่มีเฉพาะตัวเลข ( 9) และเครื่องหมาย ( S) จะกำหนดรายการข้อมูลที่ เป็น ตัวเลขA เท่านั้น ในขณะที่ข้อกำหนดของรูปภาพที่มีอักขระที่เป็นตัวอักษร ( ) หรือตัวอักษรและตัวเลข ( X) จะกำหนดรายการข้อมูลที่เป็นตัวเลขและตัวอักษร การมีอยู่ของอักขระการจัดรูปแบบอื่นๆ จะกำหนดรายการข้อมูลที่เป็นตัวเลขและตัวอักษรและตัวเลขที่แก้ไข [133]

ตัวอย่าง
PICTUREข้อ มูลค่าใน คุ้มค่า
PIC 9(5) 100 00100
"Hello" "Hello"(สิ่งนี้ถูกกฎหมาย แต่ส่งผลให้เกิดพฤติกรรมที่ไม่ได้กำหนด ) [131]
PIC +++++ -10 "  -10"(หมายเหตุช่องว่างนำหน้า)
PIC 99/99/9(4) 31042003 "31/04/2003"
PIC *(4)9.99 100.50 "**100.50"
0 "****0.00"
PIC X(3)BX(3)BX(3) "ABCDEFGHI" "ABC DEF GHI"
ข้อการใช้งาน

อนุประโยคประกาศว่าข้อมูลรูปแบบถูกจัดเก็บไว้ โดยUSAGEสามารถเสริมหรือใช้แทนPICTUREอนุประโยค ทั้งนี้ขึ้นอยู่กับชนิดข้อมูล แม้ว่าจะใช้เพื่อประกาศพอยน์เตอร์และการอ้างอิงอ็อบเจ็กต์ แต่ส่วนใหญ่จะมุ่งไปที่การระบุประเภทตัวเลข รูปแบบตัวเลขเหล่านี้คือ: [134]

  • ไบนารี โดยที่ขนาดต่ำสุดจะถูกระบุโดยPICTUREอนุประโยคหรือโดยUSAGEอนุประโยค เช่นBINARY-LONG.
  • USAGE COMPUTATIONALที่ซึ่งข้อมูลอาจถูกจัดเก็บในรูปแบบใดก็ตามที่มีการใช้งาน มักจะเทียบเท่ากับ  USAGE BINARY
  • USAGE DISPLAY, รูปแบบเริ่มต้น ซึ่งข้อมูลถูกจัดเก็บเป็นสตริง
  • จุดทศนิยม ในรูปแบบที่ขึ้นกับการใช้งานหรือตาม IEEE 754
  • USAGE NATIONALโดยที่ข้อมูลถูกจัดเก็บเป็นสตริงโดยใช้ชุดอักขระเสริม
  • USAGE PACKED-DECIMALโดยที่ข้อมูลถูกจัดเก็บในรูปแบบทศนิยมที่เล็กที่สุดเท่าที่จะเป็นไปได้ (โดยทั่วไปแล้วจะเป็นทศนิยมที่เข้ารหัสแบบไบนารี )

ผู้เขียนรายงาน

ผู้เขียนรายงานเป็น สิ่งอำนวยความ สะดวกในการประกาศสำหรับการสร้างรายงาน โปรแกรมเมอร์ต้องการเพียงระบุเค้าโครงรายงานและข้อมูลที่จำเป็นในการสร้าง ทำให้พวกเขาไม่ต้องเขียนโค้ดเพื่อจัดการกับสิ่งต่างๆ เช่น ตัวแบ่งหน้า การจัดรูปแบบข้อมูล และส่วนหัวและส่วนท้าย [135]

รายงานเชื่อมโยงกับไฟล์รายงาน ซึ่งเป็นไฟล์ที่สามารถเขียนผ่านคำสั่งผู้เขียนรายงานเท่านั้น

       FD  Report-Out  REPORT รายงาน การขาย- รายงาน

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

       RD  ขาย-รายงาน
หน้าจำกัด60 บรรทัด ราย ละเอียดแรก3 การ ควบคุมชื่อผู้ขาย.             
             
            

       01   ส่วน หัวของหน้าประเภท  03   COL 1                     VALUE "รายงานการขาย" . 03   COL 74                    ค่า"หน้า" . 03   COL 79                    PIC Z9 SOURCE PAGE -COUNTER 
            
            
              

       01   ขาย ตามวัน TYPE  DETAIL ,  LINE +1  . 03   COL 3                     VALUE "ขายต่อ" . 03   COL 12                    PIC 99/99/9999 SOURCE วันที่ขาย 03   COL 21                    ค่า"เคย" . 03   COL 26                    PIC $$$$9.99 แหล่งที่มา ยอดขาย-จำนวนเงิน
            
              
            
              

       01   ราย ละเอียด ประเภทการขายที่ไม่ ถูกต้อง, LINE +1 03   COL 3                     ค่า"บันทึกไม่ถูกต้อง: " 03   COL 19                    PIC X (34) SOURCE บันทึกการขาย   
            
              

       01   TYPE  CONTROL  HEADING ชื่อ  ผู้ขาย,  LINE +  2 03   COL 1                     VALUE "ผู้ขาย:" . 03   COL 9                     PIC X(30) SOURCE ชื่อ ผู้ขาย
            
              

คำอธิบายรายงานข้างต้นอธิบายรูปแบบต่อไปนี้:

รายงานการขาย หน้า 1

ผู้ขาย: Howard Bromberg
  ยอดขายในวันที่ 10/12/2008 เท่ากับ $1000.00
  ยอดขายในวันที่ 12/12/2008 เท่ากับ $0.00
  ยอดขายในวันที่ 13/12/2008 อยู่ที่ 31.47 เหรียญสหรัฐ
  บันทึกไม่ถูกต้อง: Howard Bromberg XXXXYY

ผู้ขาย: Howard Discount
...
รายงานการขาย หน้า 12

  ยอดขายในวันที่ 08/05/2014 อยู่ที่ $543.98
  บันทึกไม่ถูกต้อง: William Selden 12O52014FOOFOO
  ยอดขายในวันที่ 30/05/2014 เท่ากับ $0.00

สี่คำสั่งควบคุมผู้เขียนรายงาน : INITIATEซึ่งเตรียมผู้เขียนรายงานสำหรับการพิมพ์; GENERATEซึ่งพิมพ์กลุ่มรายงาน SUPPRESSซึ่งระงับการพิมพ์กลุ่มรายงาน และTERMINATEซึ่งยุติการประมวลผลรายงาน สำหรับตัวอย่างรายงานการขายข้างต้น การแบ่งขั้นตอนอาจมีลักษณะดังนี้:

           OPEN  INPUT  sales ,  OUTPUT  report-out 
INITIATE ขาย-รายงาน            
 
           ดำเนิน การ  จนถึง 1 <>  1 
อ่านการขาย เมื่อสิ้นสุดการทำงาน ดำเนินการสิ้นสุด END-READ ตรวจสอบบันทึกการขายIF ระเบียน ที่ถูกต้อง สร้างยอดขายในวัน อื่น สร้างการขายที่ไม่ถูกต้องEND -IF สิ้นสุดการดำเนิน การ ยุติการ ขายรายงานปิดการขายรายงานออก.                
                    
                        
               
 
                
                
                    
               
                    
               
           
 
            
             
           

การใช้สิ่งอำนวยความสะดวกของ Report Writer มีแนวโน้มที่จะแตกต่างกันอย่างมาก บางองค์กรใช้กันอย่างแพร่หลายและบางองค์กรไม่ได้ใช้เลย [136] นอกจากนี้ การนำ Report Writer ไปใช้งานยังอยู่ในระดับคุณภาพ โดยที่ระดับล่างสุดนั้นบางครั้งใช้หน่วยความจำมากเกินไปขณะรันไทม์ [136]

การแบ่งขั้นตอน

ขั้นตอน

ส่วนและย่อหน้าในแผนกโพรซีเดอร์ (รวมเรียกว่าโพรซีเดอร์) สามารถใช้เป็นเลเบลและเป็นรูทีนย่อยอย่าง ง่าย ต่างจากแผนกอื่นๆ ตรงที่ไม่จำเป็นต้องอยู่ในส่วนต่างๆ [137] การดำเนินการลงไปตามขั้นตอนของโปรแกรมจนกว่าจะสิ้นสุด [138] ในการใช้ขั้นตอนเป็นรูทีนย่อยPERFORMกริยาจะใช้

คำPERFORMสั่งค่อนข้างคล้ายกับโพรซีเดอร์เรียกในภาษาสมัยใหม่ ในแง่ที่ว่าการดำเนินการส่งกลับโค้ดตามPERFORMคำสั่งที่ส่วนท้ายของโค้ดที่เรียก อย่างไรก็ตาม ไม่มีกลไกใด ๆ สำหรับการส่งพารามิเตอร์หรือการคืนค่าผลลัพธ์ หากรูทีนย่อยถูกเรียกใช้โดยใช้คำสั่งง่ายๆ เช่นให้ควบคุมการส่งคืนที่ส่วนท้ายของโพรซีเดอร์ที่เรียก อย่างไรก็ตามเป็นเรื่องผิดปกติที่อาจใช้เพื่อเรียกช่วงที่ขยายลำดับของขั้นตอนที่อยู่ติดกันหลายขั้นตอน สิ่งนี้เสร็จสิ้นด้วยโครงสร้าง: PERFORM subroutinePERFORMPERFORM sub-1 THRU sub-n

 ดำเนิน การพอใช้. 
    ดำเนินการ ALPHA ดำเนินการALPHA 
    THRU GAMMA STOP RUN อั ลฟ่า . แสดงผล'A' เบต้า_ แสดงผล'B' แกมม่า. แสดงผล'C'   
     

    

    

    

ผลลัพธ์ของโปรแกรมนี้จะเป็น: "AAB C"

PERFORMยังแตกต่างจากการเรียกโพรซีเดอร์ทั่วไปตรงที่อย่างน้อยก็ไม่มีแนวคิดเรื่อง call stack ด้วยเหตุนี้ การเรียกแบบซ้อนจึงเป็นไปได้ (ลำดับของรหัสที่ถูกPERFORM'ed อาจดำเนินการPERFORMคำสั่งเอง) แต่ต้องการการดูแลเป็นพิเศษหากส่วนต่างๆ ของรหัสเดียวกันถูกเรียกใช้งานโดยทั้งสองคำขอ ปัญหาเกิดขึ้นเมื่อรหัสในการเรียกใช้ภายในถึงจุดทางออกของการเรียกใช้ภายนอก เป็นทางการมากขึ้น ถ้าการควบคุมผ่านจุดทางออกของการPERFORMวิงวอนที่ถูกเรียกก่อนหน้านี้แต่ยังไม่เสร็จสิ้น มาตรฐาน COBOL 2002 กำหนดอย่างเป็นทางการว่าพฤติกรรมนั้นไม่ได้กำหนดไว้

เหตุผลก็คือ COBOL แทนที่จะเป็น "ที่อยู่สำหรับส่งคืน" ทำงานโดยใช้สิ่งที่อาจเรียกว่าที่อยู่ต่อเนื่อง เมื่อโฟลว์การควบคุมถึงจุดสิ้นสุดของขั้นตอนใดๆ ที่อยู่ของความต่อเนื่องจะถูกค้นหาและการควบคุมจะถูกโอนไปยังที่อยู่นั้น ก่อนที่โปรแกรมจะรัน ที่อยู่ความต่อเนื่องของทุกโพรซีเดอร์จะถูกกำหนดค่าเริ่มต้นเป็นแอดเดรสเริ่มต้นของโพรซีเดอร์ที่อยู่ถัดไปในข้อความของโปรแกรม เพื่อที่ว่าหากไม่มีPERFORMคำสั่งเกิดขึ้น การควบคุมจะไหลจากบนลงล่างผ่านโปรแกรม แต่เมื่อPERFORMคำสั่งทำงาน มันจะแก้ไขที่อยู่ต่อเนื่องของกระบวนงานที่เรียก (หรือขั้นตอนสุดท้ายของช่วงที่เรียก ถ้าPERFORM THRUถูกใช้) ดังนั้นการควบคุมจะกลับไปที่ไซต์การโทรในตอนท้าย ค่าเดิมจะถูกบันทึกและกู้คืนในภายหลัง แต่มีตำแหน่งการจัดเก็บเพียงตำแหน่งเดียวเท่านั้น หากการเรียกใช้ที่ซ้อนกันสองรายการทำงานบนโค้ดที่ทับซ้อนกัน การเรียกใช้อาจรบกวนการจัดการที่อยู่ความต่อเนื่องของกันและกันได้หลายวิธี [139] [140]

ตัวอย่างต่อไปนี้ (นำมาจากVeerman & Verhoeven 2006 ) แสดงให้เห็นถึงปัญหา:

LABEL1 . 
    แสดง'1' 
    ดำเนิน การ  LABEL2 ถึงLABEL3  หยุดการทำงาน LABEL2 . แสดง'2' ดำเนินการLABEL3 ถึงLABEL4 LABEL3 . จอแสดงผล '3' LABEL4 . จอแสดงผล '4' 
     

    
       

    

    

บางคนอาจคาดหวังว่าผลลัพธ์ของโปรแกรมนี้จะเป็น "1 2 3 4 3": หลังจากแสดง "2" อันที่สองPERFORMทำให้ "3" และ "4" แสดงขึ้น จากนั้นการเรียกใช้ครั้งแรกจะดำเนินต่อไปด้วย "3" . ในการใช้งานภาษาโคบอลแบบดั้งเดิม จะไม่เป็นเช่นนั้น แต่PERFORMคำสั่งแรกจะตั้งค่าที่อยู่สำหรับต่อท้ายLABEL3เพื่อข้ามกลับไปยังไซต์การโทรLABEL1ภายใน คำสั่ง ที่สองPERFORMตั้งค่าผลตอบแทนที่ส่วนท้ายของLABEL4แต่ไม่แก้ไขที่อยู่ความต่อเนื่องของLABEL3โดยคาดว่าจะเป็นความต่อเนื่องเริ่มต้น ดังนั้นเมื่อการวิงวอนภายในมาถึงจุดสิ้นสุดของLABEL3, มันกระโดดกลับไปที่ด้านนอกPERFORMและโปรแกรมหยุดพิมพ์เพียง "1 2 3" ในทางกลับกัน ในการใช้งานภาษา COBOL บางอย่าง เช่น คอมไพเลอร์ TinyCOBOL โอเพนซอร์สPERFORMคำสั่งทั้งสองจะไม่รบกวนซึ่งกันและกัน และผลลัพธ์ที่ได้คือ "1 2 3 4 3" ดังนั้นพฤติกรรมในกรณีเช่นนี้จึงไม่เพียง (อาจ) น่าแปลกใจเท่านั้น แต่ยังไม่สามารถเคลื่อนย้ายได้ด้วย [140]

ผลพิเศษของข้อจำกัดนี้คือPERFORMไม่สามารถใช้เขียนโค้ดแบบเรียกซ้ำได้ อีกตัวอย่างง่ายๆ ที่แสดงให้เห็นสิ่งนี้ (ทำให้เข้าใจง่ายขึ้นเล็กน้อยจากVeerman & Verhoeven 2006 ):

    ย้าย 1 ไป ที่
    ป้าย แสดงประสิทธิภาพหยุด
การวิ่ง ฉลาก_ DISPLAY A IF A < 3 เพิ่ม1 ให้กับ PERFORM LABEL END -IF DISPLAY ' END'     

     
       
          
         
    
    

อาจมีคนคาดหวังว่าผลลัพธ์จะเป็น "1 2 3 END END END" และในความเป็นจริง นั่นคือสิ่งที่คอมไพเลอร์ภาษาโคบอลต์สร้างขึ้น แต่คอมไพเลอร์บางตัว เช่น IBM COBOL จะสร้างโค้ดที่พิมพ์ "1 2 3 END END END END ..." และต่อๆ ไป พิมพ์ "END" ซ้ำแล้วซ้ำอีกแบบวนซ้ำไม่รู้จบ เนื่องจากมีพื้นที่จำกัดในการจัดเก็บที่อยู่ความต่อเนื่องของการสำรองข้อมูล ข้อมูลสำรองจะถูกเขียนทับในระหว่างการเรียกใช้แบบเรียกซ้ำ และทั้งหมดที่สามารถกู้คืนได้ก็คือการข้ามกลับไปDISPLAY 'END'ที่ [140]

คำชี้แจง

โคบอล 2014 มี 47 ประโยค (เรียกอีกอย่างว่ากริยา ) [141]ซึ่งสามารถจัดกลุ่มเป็นหมวดหมู่กว้างๆ ต่อไปนี้: กระแสการควบคุม, I/O, การจัดการข้อมูล และผู้เขียนรายงาน คำชี้แจงของผู้เขียนรายงานจะครอบคลุมอยู่ในส่วนผู้ เขียนรายงาน

การควบคุมการไหล

คำสั่งเงื่อนไขของ COBOL คือIFและEVALUATE. EVALUATEเป็นคำสั่งแบบสวิตช์พร้อมความสามารถเพิ่มเติมในการประเมินค่าและเงื่อนไขต่างๆ สามารถใช้ในการดำเนินการตารางการตัดสินใจ ตัวอย่างเช่น อาจใช้ข้อมูลต่อไปนี้เพื่อควบคุมเครื่องกลึง CNC :

ประเมิน TRUE  เช่นกันความเร็วที่ต้องการ ALSO ความเร็วปัจจุบัน เมื่อปิดฝาALSO ความเร็วต่ำสุดTHRU ความเร็ว สูงสุดยังน้อยกว่าความเร็วที่ต้องการดำเนินการเพิ่มความเร็วเครื่องเมื่อปิดฝาALSO ความเร็วต่ำสุดTHRU ความเร็ว สูงสุดและยังยิ่ง ใหญ่ กว่าที่ต้องการ -speed ดำเนินการช้าลงเครื่องเมื่อเปิดฝาและยังไม่เป็นศูนย์ดำเนิน การ หยุดฉุกเฉินเมื่ออื่น ๆดำเนิน การต่อ  
             
         
             
         
          
         
     
        
สิ้นสุด-ประเมิน

คำPERFORMสั่งนี้ใช้เพื่อกำหนดลูปซึ่งจะดำเนินการจนกว่าเงื่อนไขจะเป็นจริง (ไม่ใช่ในขณะที่จริง ซึ่งเป็นเรื่องปกติในภาษาอื่น) นอกจากนี้ยังใช้เพื่อเรียกขั้นตอนหรือช่วงของขั้นตอน (ดู รายละเอียดเพิ่มเติมใน ส่วนขั้นตอน ) CALLและINVOKEเรียกโปรแกรมย่อยและวิธีการตามลำดับ ชื่อของโปรแกรมย่อย/วิธีการมีอยู่ในสตริงซึ่งอาจเป็นตัวอักษรหรือรายการข้อมูล [142]พารามิเตอร์สามารถส่งผ่านโดยการอ้างอิงโดยเนื้อหา (โดยที่สำเนาถูกส่งผ่านโดยการอ้างอิง) หรือตามค่า (แต่เฉพาะในกรณีที่ต้นแบบพร้อมใช้งาน) [143] CANCELยกเลิกการโหลดโปรแกรมย่อยจากหน่วยความจำGO TOทำให้โปรแกรมข้ามไปยังขั้นตอนที่ระบุ

คำGOBACKสั่งเป็นคำสั่งส่งคืนและSTOPคำสั่งหยุดโปรแกรม คำEXITสั่งมีรูปแบบที่แตกต่างกันหกรูปแบบ: สามารถใช้เป็นคำสั่งส่งคืน คำสั่งแบ่ง คำสั่งทำต่อเครื่องหมายสิ้นสุด หรือเพื่อออกจากขั้นตอน [144]

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

ไอ/โอ

ไฟล์ I/O ได้รับการจัดการโดยคำสั่ง self-describing OPEN, CLOSE, READ, และWRITEคำสั่งพร้อมกับอีกสามคำสั่ง: REWRITE, ซึ่งอัพเดตเร็กคอร์ด; STARTซึ่งเลือกบันทึกที่ตามมาเพื่อเข้าถึงโดยการค้นหาบันทึกด้วยคีย์บางตัว และUNLOCKซึ่งปลดล็อคบันทึกล่าสุดที่เข้าถึงได้

การโต้ตอบกับผู้ใช้ทำได้โดยใช้ ACCEPTและDISPLAY

การจัดการข้อมูล

กริยาต่อไปนี้จัดการข้อมูล:

  • INITIALIZEซึ่งตั้งค่ารายการข้อมูลให้เป็นค่าเริ่มต้น
  • MOVEซึ่งกำหนดค่าให้กับรายการข้อมูล MOVE CORRESPONDINGกำหนดฟิลด์ ที่มีชื่อเหมือน กัน
  • SETซึ่งมี 15 รูปแบบ: สามารถแก้ไขดัชนี กำหนดการอ้างอิงวัตถุ และแก้ไขความจุของตาราง รวมถึงฟังก์ชันอื่นๆ [145]
  • ADD, SUBTRACT, MULTIPLY, DIVIDE, และCOMPUTEซึ่งจัดการเลขคณิต (ด้วยCOMPUTEการกำหนดผลลัพธ์ของสูตรให้กับตัวแปร)
  • ALLOCATEและFREEซึ่งจัดการหน่วยความจำแบบไดนามิก
  • VALIDATEซึ่งตรวจสอบและแจกจ่ายข้อมูลตามที่ระบุไว้ในคำอธิบายของรายการในแผนกข้อมูล
  • STRINGและUNSTRINGซึ่งเชื่อมและแยกสตริงตามลำดับ
  • INSPECTซึ่งนับหรือแทนที่อินสแตนซ์ของสตริงย่อยที่ระบุภายในสตริง
  • SEARCHซึ่งค้นหาตารางสำหรับรายการแรกที่ตรงตามเงื่อนไข

ไฟล์และตารางถูกจัดเรียงโดยใช้ กริยาผสาน SORTและ จัด MERGEเรียงไฟล์ RELEASEกริยาจัดเตรียมเร็กคอร์ดเพื่อเรียงลำดับและดึงRETURNเร็กคอร์ดที่เรียงลำดับตามลำดับ

การยกเลิกขอบเขต

คำสั่งบางอย่าง เช่นIFและREADอาจมีข้อความในตัวเอง ข้อความดังกล่าวอาจสิ้นสุดลงได้สองวิธี: โดยช่วงเวลา ( การยุติโดยนัย ) ซึ่งจะยุติข้อความ ที่ไม่สิ้นสุดทั้งหมด ที่มีอยู่ หรือโดยตัวยุติขอบเขต ซึ่งจะยุติคำสั่งเปิดที่ตรงกันที่ใกล้ที่สุด

*> ระยะเวลา Terminator ("การยุติโดยปริยาย") 
IF  การบันทึกที่ไม่ถูกต้อง
    IF  no-more-records 
        NEXT  SENTENCE 
ELSE READ ไฟล์บันทึกAT END SET no -more-records TO TRUE    
         
                 

*> ตัวยุติขอบเขต ("การยุติโดยชัดแจ้ง") 
IF  ไม่ถูกต้อง
    -record IF  no-more-records 
        CONTINUE 
ELSE READ ไฟล์บันทึกที่END SET no-more-records TO TRUE END -READ END-IF END-IF    
         
                 
        
    

คำสั่งซ้อนที่สิ้นสุดด้วยจุดหนึ่งเป็นสาเหตุของจุดบกพร่องทั่วไป [146] [147]ตัวอย่างเช่น ตรวจสอบรหัสต่อไปนี้:

IF  x 
    แสดง ผลy แสดงผลz
     

ในที่นี้ เจตนาคือการแสดงyและzหากเงื่อนไขxเป็นจริง อย่างไรก็ตามzจะแสดงค่าใดก็ตามxเนื่องจากIFคำสั่งถูกยกเลิกโดยช่วงที่ผิดพลาดหลังจาก DISPLAY y

ข้อผิดพลาดอีกประการหนึ่งเป็นผลมาจากปัญหาอื่นที่ห้อย ต่องแต่งเมื่อสองIFคำสั่งสามารถเชื่อมโยงกับELSE

IF  x 
    IF  y 
        แสดงผล เป็นELSE DISPLAY  b .

     

ในส่วนข้างต้นELSEเชื่อมโยงกับ     คำสั่งแทน     คำสั่ง ทำให้เกิดข้อผิดพลาด ก่อนที่จะมีการแนะนำตัวยุติขอบเขตที่ชัดเจน การป้องกันจะต้อง     วางไว้หลัง. [147]IF yIF xELSE NEXT SENTENCEIF

รหัสแก้ไขตัวเอง

ข้อกำหนดภาษาโคบอลดั้งเดิม (1959) รองรับ     คำสั่งที่น่าอับอาย ซึ่งคอมไพเลอร์จำนวนมากสร้างโค้ดที่ปรับเปลี่ยนตัวเอง และเป็นฉลากขั้นตอนและ     คำสั่งเดียวในขั้นตอนการดำเนินการหลังจากคำสั่งดังกล่าวหมายถึง     แทน คอมไพเลอร์จำนวนมากยังคงสนับสนุน[148] แต่ถือว่าล้าสมัยในมาตรฐาน COBOL 1985 และถูกลบไปในปี 2002 [149]ALTER X TO PROCEED TO YXYGO TOXALTERGO TO Y

ถ้อยแถลง นี้ALTERถูกมองว่าไม่ดี เพราะเป็นการบ่อนทำลาย "บริบทของบริบท" และทำให้ตรรกะโดยรวมของโปรแกรมเข้าใจยาก [150] ตามที่ผู้เขียนตำราเรียนDaniel D. McCrackenเขียนไว้ในปี 1976 เมื่อ "คนที่ไม่เคยเห็นโปรแกรมมาก่อนจะต้องคุ้นเคยกับมันให้เร็วที่สุด บางครั้งอยู่ภายใต้แรงกดดันด้านเวลาวิกฤติเพราะโปรแกรมล้มเหลว ... สายตาของ คำสั่ง GO TO ในย่อหน้าโดยตัวมันเอง ส่งสัญญาณเช่นเดียวกับการมีอยู่ของข้อความ ALTER ที่ไม่ทราบจำนวนที่ตำแหน่งที่ไม่รู้จักตลอดทั้งโปรแกรม ทำให้เกิดความกลัวในหัวใจของโปรแกรมเมอร์ที่กล้าหาญที่สุด" [150]

สวัสดีชาวโลก

โปรแกรม " สวัสดีชาวโลก " ในภาษาโคบอล:

        กองระบุ. 
รหัสโปรแกรม สวัสดีชาว โลก กองกระบวนการ. DISPLAY "สวัสดีชาวโลก!" .        
        
           
           

เมื่อ – ตอนนี้มีชื่อเสียง – “สวัสดี ชาวโลก!” ตัวอย่างโปรแกรม ใน ภาษา C Programmingได้รับการตีพิมพ์ครั้งแรกในปี 1978 ตัวอย่างโปรแกรม COBOL เมนเฟรมที่คล้ายคลึงกันจะถูกส่งผ่านJCLซึ่งเป็นไปได้มากว่าจะใช้เครื่องอ่านบัตรเจาะ และบัตรเจาะคอลัมน์ 80 ใบ รายการด้านล่างด้วย DATA DIVISION ที่ว่างเปล่าได้รับการทดสอบโดยใช้ Linux และโปรแกรมจำลอง System/370 Herculesที่รันMVS 3.8J JCL ซึ่งเขียนในเดือนกรกฎาคม 2015 มาจากบทแนะนำและตัวอย่าง Hercules ที่จัดโดย Jay Moseley [151]เพื่อให้สอดคล้องกับการเขียนโปรแกรมภาษาโคบอลในยุคนั้น HELLO, WORLD จะแสดงด้วยตัวพิมพ์ใหญ่ทั้งหมด

// COBUCLG   JOB  ( 001 ), 'COBOL BASE TEST ' ,                                  00010000 
//              CLASS = A , MSGCLASS = A , MSGLEVEL = ( 1 , 1 )                         00020000 
// BASETEST  EXEC  COBUCLG                                                  00030000 
// COB SYSIN DD * 00040000 00000 * การ ตรวจสอบฐานโคบอล การ ติดตั้ง00050000 01000 แผนกการระบุ                                                          
                                     
 .                                          00060000 
01100 รหัสโปรแกรม  'สวัสดี' .                                              00070000 
02000 กองสิ่งแวดล้อม _ 00080000 02100 ส่วนการกำหนดค่า 00090000 02110 แหล่งคอมพิวเตอร์ กนูลินุ กซ์ . 00100000 02120 วัตถุคอมพิวเตอร์ เฮอ ร์คิว ลิส 00110000 02200 ชื่อพิเศษ 00120000 02210      คอนโซลเป็นคอนโซล_ 00130000 03000 กองข้อมูล_                                            
                                            
                                        
                                        
                                                   
                                              
                                                    00140000 
04000 กองกระบวนการ_  00150000 04100 00 - หลัก 00160000 04110      แสดง'สวัสดี โลก' เมื่อได้รับคอน 00170000 04900      หยุดวิ่ง_ 00180000 // แอ เคด SYSLIB DD DSNAME = SYS1 . COBLIB , DISP = SHR 00190000 // DD DSNAME = SYS1 . LINKLIB , DISP =                                              
                                                         
                             
                                                     
                              
             SHR                            002000000 
// ไป_ SYSPRINT  DD  SYSOUT = A                                                00210000 
//                                                                       00220000

หลังจากส่ง JCL คอนโซล MVS จะแสดงขึ้น:

    19.52.48 งาน 3 $ HASP100 COBUCLG บน READER1 การทดสอบฐานโคบอล
    19.52.48 JOB 3 IEF677I ข้อความเตือนสำหรับงาน COBUCLG ที่ออก
    19.52.48 งาน 3 $ HASP373 COBUCLG เริ่มต้นแล้ว - INIT 1 - CLASS A - SYS BSP1
    19.52.48 JOB 3 IEC130I SYSPUNCH DD คำสั่งหายไป
    19.52.48 คำสั่งงาน 3 IEC130I SYLIB DD ขาดหายไป
    19.52.48 JOB 3 IEC130I SYSPUNCH DD คำสั่งหายไป
    19.52.48 JOB 3 IEFACTRT - ชื่อขั้นตอน Procstep Program Retcode
    19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000
    19.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 0000
    19.52.48 จ๊อบ 3 +สวัสดีชาวโลก
    19.52.48 งาน 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000
    19.52.48 งาน 3 $HASP395 COBUCLG สิ้นสุด

บรรทัดที่ 10 ของรายการคอนโซลด้านบนถูกเน้นสำหรับเอฟเฟกต์ การเน้นไม่ได้เป็นส่วนหนึ่งของเอาต์พุตคอนโซลจริง

รายการคอมไพเลอร์ที่เกี่ยวข้องสร้างรายละเอียดทางเทคนิคและข้อมูลการรันงานมากกว่าสี่หน้า สำหรับเอาต์พุตบรรทัดเดียวจาก 14 บรรทัดของ COBOL

แผนกต้อนรับ

โครงสร้างขาด

ในปี 1970 การนำ กระบวนทัศน์ การเขียนโปรแกรมแบบมีโครงสร้าง มาใช้ เริ่มแพร่หลายมากขึ้นเรื่อยๆ Edsger Dijkstraนักวิทยาศาสตร์คอมพิวเตอร์ระดับแนวหน้า เขียนจดหมายถึงบรรณาธิการของCommunications of the ACMตีพิมพ์ในปี 1975 ในหัวข้อ "How do weบอกความจริงที่อาจทำร้าย" ซึ่งเขาวิจารณ์ภาษาโคบอลและภาษาร่วมสมัยอื่นๆ อีกหลายภาษา โดยตั้งข้อสังเกตว่า "การใช้ภาษาโคบอลทำให้จิตใจพิการ" [152] ในการตีพิมพ์ที่ไม่เห็นด้วยกับคำพูดของ Dijkstra นักวิทยาศาสตร์คอมพิวเตอร์ Howard E. Tompkins อ้างว่า COBOL ที่ ไม่มีโครงสร้างมีแนวโน้มที่จะ "เขียนโดยโปรแกรมเมอร์ที่ไม่เคยได้รับประโยชน์จากการสอนภาษา COBOL ที่มีโครงสร้างดี",[153]

สาเหตุหนึ่งของรหัสปาเก็ตตี้คือGO TOคำสั่ง อย่างไรก็ตาม ความพยายามที่จะลบGO TOs ออกจากโค้ดภาษาโคบอล ส่งผลให้โปรแกรมซับซ้อนและคุณภาพของโค้ดลดลง ส่วนใหญ่ถูกแทนที่ด้วย คำสั่งและขั้นตอน [ 154 ] ซึ่งสนับสนุนการเขียนโปรแกรมแบบแยกส่วน[154]และทำให้เข้าถึงสิ่งอำนวยความสะดวกการวนรอบที่ทรงพลังได้ง่าย อย่างไรก็ตามสามารถใช้ได้เฉพาะกับโพรซีเดอร์เท่านั้น ดังนั้นตัวลูปไม่อยู่ในตำแหน่งที่ใช้ ทำให้โปรแกรมเข้าใจยากขึ้น [155]GO TOPERFORMPERFORM

โปรแกรมภาษาโคบอลต์มีชื่อเสียงในด้านการเป็นเสาหินและขาดการทำให้เป็นโมดูล [156] รหัสภาษาโคบอลสามารถถูกทำให้เป็นโมดูลได้โดยใช้ขั้นตอนเท่านั้น ซึ่งพบว่าไม่เพียงพอสำหรับระบบขนาดใหญ่ เป็นไปไม่ได้ที่จะจำกัดการเข้าถึงข้อมูล ซึ่งหมายความว่าขั้นตอนสามารถเข้าถึงและแก้ไขรายการข้อมูลใดๆ ได้ นอกจากนี้ ไม่มีทางที่จะส่งผ่านพารามิเตอร์ไปยังขั้นตอนใด ๆ การละเลย Jean Sammet ถือเป็นความผิดพลาดที่ใหญ่ที่สุดของคณะกรรมการ [157] ความซับซ้อนอีกประการหนึ่งเกิดขึ้นจากความสามารถในPERFORM THRUการลำดับขั้นตอนที่ระบุ นี่หมายความว่าการควบคุมสามารถข้ามไปและกลับจากขั้นตอนใดๆ ก็ได้ สร้างโฟลว์การควบคุมที่ซับซ้อน และอนุญาตให้โปรแกรมเมอร์ทำลายกฎsingle -entry single-exit[158]

สถานการณ์นี้ดีขึ้นเมื่อ COBOL นำคุณลักษณะต่างๆ มาใช้มากขึ้น COBOL-74 เพิ่มโปรแกรมย่อย ทำให้โปรแกรมเมอร์สามารถควบคุมข้อมูลที่แต่ละส่วนของโปรแกรมสามารถเข้าถึงได้ จากนั้น COBOL-85 ก็เพิ่มโปรแกรมย่อยที่ซ้อนกัน ทำให้โปรแกรมเมอร์สามารถซ่อนโปรแกรมย่อยได้ [159]การควบคุมข้อมูลและโค้ดเพิ่มเติมเกิดขึ้นในปี 2545 เมื่อรวมการเขียนโปรแกรมเชิงวัตถุ ฟังก์ชันที่ผู้ใช้กำหนด และประเภทข้อมูลที่กำหนดโดยผู้ใช้

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

ปัญหาความเข้ากันได้

COBOL ตั้งใจให้เป็นภาษา "ทั่วไป" ที่พกพาสะดวก อย่างไรก็ตาม ในปี 2544 มีการสร้างภาษาถิ่นประมาณ 300 ภาษา [161]แหล่งที่มาของภาษาถิ่นหนึ่งคือมาตรฐาน: มาตรฐานปี 1974 ประกอบด้วยนิวเคลียสบังคับหนึ่งส่วนและโมดูลการทำงานสิบเอ็ดส่วน แต่ละส่วนมีการสนับสนุนสองหรือสามระดับ สิ่งนี้อนุญาต 104,976 ตัวแปรอย่างเป็นทางการ [162]

COBOL-85 เข้ากันไม่ได้กับเวอร์ชันก่อนหน้าอย่างสมบูรณ์ และการพัฒนาก็ยังเป็นที่ถกเถียงกันอยู่ โจเซฟ ที. โบรฟีCIOของTravellers Insuranceเป็นหัวหอกในความพยายามที่จะแจ้งให้ผู้ใช้ COBOL ทราบถึงค่าใช้จ่ายในการตั้งโปรแกรมซ้ำจำนวนมากของการนำมาตรฐานใหม่ไปใช้ [163]ด้วยเหตุนี้ คณะกรรมการ ANSI COBOL จึงได้รับจดหมายจากสาธารณชนมากกว่า 2,200 ฉบับ ซึ่งส่วนใหญ่เป็นเชิงลบ ทำให้คณะกรรมการต้องเปลี่ยนแปลง ในทางกลับกัน การแปลงเป็น COBOL-85 นั้นคิดว่าจะเพิ่มผลผลิตในปีต่อ ๆ ไป จึงเป็นการปรับต้นทุนการแปลงให้เหมาะสม [164]

ไวยากรณ์ละเอียด

โคบอล: /koh′bol/, n.

ภาษาที่อ่อน ละเอียด และหย่อนยานซึ่งใช้โดยเครื่องบดโค้ดเพื่อทำสิ่งไร้สาระที่น่าเบื่อบนเมนเฟรมของไดโนเสาร์ [... ] ชื่อของมันไม่ค่อยมีใครพูดออกมาโดยไม่มีการแสดงออกทางพิธีกรรมที่น่ารังเกียจหรือสยองขวัญ

ไฟล์ศัพท์แสง 4.4.8 [165]

ไวยากรณ์ภาษาโคบอลมักถูกวิพากษ์วิจารณ์ว่าเป็นเพราะการใช้คำฟุ่มเฟือย ผู้เสนอบอกว่าสิ่งนี้มีจุดมุ่งหมายเพื่อให้รหัสself-documentingทำให้การบำรุงรักษาโปรแกรมง่ายขึ้น [166]ภาษาโคบอลต์ยังตั้งใจให้โปรแกรมเมอร์เรียนรู้และใช้งานได้ง่าย[167]ในขณะที่ยังคงสามารถอ่านได้สำหรับเจ้าหน้าที่ที่ไม่ใช่ด้านเทคนิค เช่น ผู้จัดการ [168] [169] [170] [171] ความต้องการในการอ่านได้นำไปสู่การใช้ไวยากรณ์และองค์ประกอบโครงสร้างที่คล้ายภาษาอังกฤษ เช่น คำนาม กริยา อนุประโยค ประโยค ส่วน และการแบ่ง ทว่าในปี 1984 ผู้ดูแลโปรแกรมภาษาโคบอลพยายามดิ้นรนเพื่อจัดการกับรหัสที่ "เข้าใจยาก" [170]และการเปลี่ยนแปลงหลักใน COBOL-85 ก็อยู่ที่นั่นเพื่อช่วยให้การบำรุงรักษาง่ายขึ้น [88]

Jean Sammet สมาชิกคณะกรรมการระยะสั้นกล่าวว่า "มีความพยายามเพียงเล็กน้อยในการจัดหาโปรแกรมเมอร์มืออาชีพ อันที่จริงแล้วผู้ที่มีความสนใจหลักในการเขียนโปรแกรมมักจะไม่พอใจกับภาษาโคบอลมาก" ซึ่งเธออ้างว่าเป็นไวยากรณ์ที่ละเอียดของภาษาโคบอล [172]

การแยกตัวออกจากชุมชนวิทยาการคอมพิวเตอร์

ชุมชนโคบอลถูกแยกออกจากชุมชนวิทยาการคอมพิวเตอร์มาโดยตลอด ไม่มีนักวิทยาศาสตร์คอมพิวเตอร์เชิงวิชาการเข้าร่วมในการออกแบบภาษาโคบอล: ทั้งหมดในคณะกรรมการมาจากการค้าหรือรัฐบาล นักวิทยาศาสตร์คอมพิวเตอร์ในขณะนั้นสนใจในสาขาต่างๆ เช่น การวิเคราะห์เชิงตัวเลข ฟิสิกส์ และการเขียนโปรแกรมระบบ มากกว่าปัญหาการประมวลผลไฟล์เชิงพาณิชย์ที่การพัฒนาของ COBOL จัดการ [173]ฌอง แซมเม็ต อ้างว่าโคบอลไม่เป็นที่นิยมในตอนแรก "ปฏิกิริยาเย่อหยิ่ง" เนืองจากความไม่เป็นระเบียบ การขาดนักวิทยาศาสตร์คอมพิวเตอร์ที่มีอิทธิพลเข้าร่วมในกระบวนการออกแบบ และการดูหมิ่นการประมวลผลข้อมูลทางธุรกิจ [174]ข้อกำหนดภาษาโคบอลต์ใช้ "สัญกรณ์" หรือmetalanguageเฉพาะเพื่อกำหนดไวยากรณ์แทนที่จะเป็นรูปแบบใหม่แบบฟอร์ม Backus–Naurที่คณะกรรมการไม่ทราบ ส่งผลให้เกิดการวิพากษ์วิจารณ์อย่าง "รุนแรง" [175] [176] [66]

ต่อมา COBOL ประสบปัญหาการขาดแคลนวัสดุที่ครอบคลุม ต้องใช้เวลาจนถึงปีพ.ศ. 2506 หนังสือเบื้องต้นจึงจะปรากฏ (โดยริชาร์ด ดี. เออร์วินจัดพิมพ์หนังสือเรียนของวิทยาลัยในภาษาโคบอลต์ในปี พ.ศ. 2509) [177]ภายในปี 1985 มีหนังสือเกี่ยวกับ Fortran มากเป็นสองเท่าและมีหนังสือเกี่ยวกับหนังสือขั้นพื้นฐานถึงสี่เท่าใน COBOL ในหอสมุดรัฐสภา [117]อาจารย์มหาวิทยาลัยสอนภาษาและเทคนิคที่ทันสมัยและล้ำสมัยมากกว่าภาษาโคบอลซึ่งกล่าวกันว่ามีลักษณะเป็น "โรงเรียนการค้า" [178]โดนัลด์ เนลสัน ประธานคณะกรรมการโคดาซิล โคบอล กล่าวในปี 2527 ว่า "นักวิชาการ ... เกลียดชังโคบอล" และผู้สำเร็จการศึกษาด้านวิทยาการคอมพิวเตอร์ "เคย 'เกลียดชังโคบอล' มาก่อน" [179]การสำรวจความคิดเห็นปี 2013 โดยMicro Focusพบว่า 20% ของนักวิชาการในมหาวิทยาลัยคิดว่า COBOL นั้นเชยหรือตายไปแล้ว และ 55% เชื่อว่านักศึกษาคิดว่า COBOL นั้นเชยหรือตายไปแล้ว แบบสำรวจเดียวกันนี้ยังพบว่ามีนักวิชาการเพียง 25% เท่านั้นที่มีการเขียนโปรแกรมภาษาโคบอลในหลักสูตรของตน แม้ว่า 60% คิดว่าควรสอนก็ตาม [180] ในทางตรงกันข้าม ในปี 2546 ภาษาโคบอล (COBOL) นำเสนอใน 80% ของ หลักสูตร ระบบสารสนเทศในสหรัฐอเมริกา ซึ่งมีสัดส่วนเท่ากับC ++ และJava [181]

นอกจากนี้ยังมีการเหยียดหยามอย่างมีนัยสำคัญต่อ COBOL ในชุมชนธุรกิจจากผู้ใช้ภาษาอื่น เช่นFORTRANหรือassemblerซึ่งหมายความว่า COBOL สามารถใช้ได้เฉพาะกับปัญหาที่ไม่ท้าทายเท่านั้น [ ต้องการการอ้างอิง ]

ความกังวลเกี่ยวกับขั้นตอนการออกแบบ

มีข้อสงสัยเกี่ยวกับความสามารถของคณะกรรมการมาตรฐาน Howard Bromberg สมาชิกคณะกรรมการระยะสั้นกล่าวว่ามี "การควบคุมเพียงเล็กน้อย" ในกระบวนการพัฒนา และ "ถูกรบกวนโดยความไม่ต่อเนื่องของบุคลากรและ ... การขาดความสามารถ" [76] Jean Sammet และ Jerome Garfunkel ยังตั้งข้อสังเกตด้วยว่าการเปลี่ยนแปลงที่แนะนำในการแก้ไขมาตรฐานครั้งหนึ่งจะได้รับการย้อนกลับในครั้งต่อไป เนื่องจากการเปลี่ยนแปลงมากในคณะกรรมการมาตรฐานตามหลักฐานที่เป็นรูปธรรม [182]

มาตรฐาน COBOL ได้รับความเดือดร้อนจากความล่าช้าซ้ำแล้วซ้ำเล่า: COBOL-85 มาถึงช้ากว่าที่หวังไว้ห้าปี[183] ​​COBOL 2002 มาช้าห้าปี[2] และ COBOL 2014 มาช้าหกปี [95] [184] เพื่อต่อสู้กับความล่าช้า คณะกรรมการมาตรฐานอนุญาตให้สร้างเพิ่มเติมที่จะเพิ่มคุณสมบัติได้เร็วกว่าการรอการแก้ไขมาตรฐานถัดไป อย่างไรก็ตาม สมาชิกคณะกรรมการบางคนแสดงความกังวลเกี่ยวกับความไม่ลงรอยกันระหว่างการใช้งานและการดัดแปลงมาตรฐานบ่อยครั้ง [185]

อิทธิพลในภาษาอื่นๆ

โครงสร้างข้อมูลของ COBOL มีอิทธิพลต่อภาษาการเขียนโปรแกรมที่ตามมา บันทึกและโครงสร้างไฟล์มีอิทธิพลต่อPL/IและPascalและREDEFINESอนุประโยคเป็นบรรพบุรุษของเร็กคอร์ดตัวแปรของ Pascal คำจำกัดความของโครงสร้างไฟล์ที่ชัดเจนมาก่อนการพัฒนาระบบการจัดการฐานข้อมูลและข้อมูลที่รวบรวมได้ถือเป็นความก้าวหน้าที่สำคัญเหนืออาร์เรย์ของ Fortran [117] PICTUREการประกาศข้อมูลถูกรวมไว้ใน PL/I โดยมีการเปลี่ยนแปลงเล็กน้อย

สิ่งอำนวยความสะดวก ของ COBOL COPYแม้ว่าจะถือว่า "ดั้งเดิม" [186]มีอิทธิพลต่อการพัฒนาคำสั่งรวม [117]

การมุ่งเน้นไปที่การพกพาและการกำหนดมาตรฐานหมายถึงโปรแกรมที่เขียนในภาษาโคบอลสามารถพกพาได้และอำนวยความสะดวกในการแพร่กระจายของภาษาไปยังแพลตฟอร์มฮาร์ดแวร์และระบบปฏิบัติการที่หลากหลาย [187]นอกจากนี้ โครงสร้างการแบ่งที่มีการกำหนดไว้อย่างดีจะจำกัดคำจำกัดความของการอ้างอิงภายนอกไปยังแผนกสิ่งแวดล้อม ซึ่งทำให้การเปลี่ยนแปลงแพลตฟอร์มง่ายขึ้นโดยเฉพาะ [188]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ ได้รับอิทธิพลเป็นพิเศษจากคุณลักษณะเชิงวัตถุของ COBOL 2002 [2] [3] [4]
  2. หลุมฝังศพปัจจุบันอยู่ที่พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์ [61]
  3. ^ ส่วนขยายเฉพาะผู้ขายทำให้การใช้งานหลายอย่างมีมากขึ้น: การใช้งานหนึ่งครั้งรู้จักคำหลักมากกว่า 1,100 คำ [14]

อ้างอิง

การอ้างอิง

  1. อรรถa b Sammet, Jean E. (มีนาคม 2000) "ผู้สร้างที่แท้จริงของ Cobol" ซอฟต์แวร์IEEE 17 (2): 30–32. ดอย : 10.1109/52.841602 . ISSN  1937-4194 .คณะกรรมการระยะสั้นทำงานอย่างขยันขันแข็งตั้งแต่มิถุนายน 2502 เป็นต้นไป แต่มีปัญหามากในการมีคณะกรรมการที่ค่อนข้างใหญ่พยายามสร้างภาษาโปรแกรม ในเดือนพฤศจิกายน ประธานคณะกรรมการระยะสั้นได้แต่งตั้งคนหกคนเพื่อพัฒนาข้อกำหนดสำหรับการพิจารณา: William Selden และ Gertrude Tierney (IBM), Howard Bromberg และ Norman Discount (RCA) และ Vernon Reeves และ Jean E. Sammet (Sylvania Electric Products) เราทำงานเป็นเวลาสองสัปดาห์เต็ม (รวมถึงการประชุมตลอด 24 ชั่วโมง) ในเดือนพฤศจิกายน 2502 และส่งข้อกำหนดที่เสนอไปยังคณะกรรมการระยะสั้นเต็มรูปแบบ ซึ่งยอมรับเกือบทั้งหมด หลังจากแก้ไขบางส่วน (โดยคนเดิม 6 คน) เราได้ส่งข้อกำหนดดังกล่าวเป็นรายงานฉบับสมบูรณ์ในเดือนธันวาคมให้คณะกรรมการบริหาร ซึ่งยอมรับในเดือนมกราคม 1960 หลังจากแก้ไขเพิ่มเติมบางส่วน โรงพิมพ์ของรัฐบาลได้ออก Cobol 60 [...] [Grace Hopper] ไม่ได้เข้าร่วมในงานนี้ เว้นแต่ผ่านการแนะแนวทั่วไปที่เธอให้กับเจ้าหน้าที่ของเธอซึ่งเป็นกรรมการโดยตรง ดังนั้น ในขณะที่อิทธิพลทางอ้อมของเธอมีความสำคัญมาก แต่น่าเสียดายที่คำพูดซ้ำๆ บ่อยๆ ว่า "เกรซ ฮ็อปเปอร์ พัฒนาโคบอล" หรือ "เกรซ ฮอปเปอร์เป็นนักเขียนโค้ดของโคบอล" หรือ "เกรซ ฮอปเปอร์เป็นมารดาของโคบอล" ก็ไม่ถูกต้อง
  2. อรรถเป็น c Saade เฮนรี่; วอลเลซ, แอน (ตุลาคม 2538). "COBOL '97: รายงานสถานะ " บันทึก ของDr. Dobb เก็บถาวรจากต้นฉบับเมื่อ 22 เมษายน 2557 . สืบค้นเมื่อ21 เมษายน 2557 .
  3. อรรถเป็น อาร์รังกา เอดมันด์ ค.; คอยล์, แฟรงค์ พี. (กุมภาพันธ์ 2541). โคบอลเชิงวัตถุ สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ . หน้า 15. ISBN 978-0132611404. สไตล์ของ Object-Oriented COBOL สะท้อนถึงอิทธิพลของ Smalltalk และ C++
  4. อารังกา เอดมันด์ ซี.; คอยล์, แฟรงค์ พี. (มีนาคม 1997) "โคบอล: การรับรู้และความเป็นจริง". คอมพิวเตอร์ . 30 (3): 127. ดอย : 10.1109/2.573683 . ISSN 0018-9162 . 
  5. ^ อิมาโจ เท็ตสึจิ; และคณะ (กันยายน 2543). COBOL Script: ภาษาสคริปต์เชิงธุรกิจ การประชุมคอมพิวเตอร์ออบเจ็ กต์แบบกระจายขององค์กร มาคุฮาริ ประเทศญี่ปุ่น: IEEE ดอย : 10.1109/EDOC.2000.882363 . ISBN 0769508650.
  6. ^ โฮ หงษ์หง (7 พฤษภาคม 2550) "ความรู้เบื้องต้นเกี่ยวกับ EGL" (PDF) . ไอบีเอ็ม ซอฟต์แวร์ กรุ๊ป
  7. ^ เรดิน, จอร์จ (1978). Wexelblat, Richard L. (บรรณาธิการ). ประวัติความเป็นมา เบื้องต้นและลักษณะของ PL/I ประวัติภาษาการเขียนโปรแกรม. สำนักพิมพ์วิชาการ (ตีพิมพ์ พ.ศ. 2524) หน้า 572. ดอย : 10.1145/800025.1198410 . ISBN 0127450408.
  8. มิตเชลล์, โรเบิร์ต แอล. (14 มีนาคม 2555). "การระบายสมอง: ระบบ Cobol ไปจากที่นี่" . โลก คอมพิวเตอร์. สืบค้นเมื่อ9 กุมภาพันธ์ 2558 .
  9. อรรถเป็น c มิทเชลล์ โรเบิร์ต แอล. (4 ตุลาคม 2549) "โคบอล: ยังไม่ตาย" . โลก คอมพิวเตอร์. สืบค้นเมื่อ27 เมษายน 2557 .
  10. เอนส์เมงเกอร์, นาธาน แอล. (2009). The Computer Boys Take Over: คอมพิวเตอร์ โปรแกรมเมอร์ และการเมืองของความเชี่ยวชาญทางเทคนิค สำนักพิมพ์เอ็มไอที หน้า 100. ISBN 978-0262050937. LCCN  2009052638 .
  11. ^ "ISO/IEC 1989:2014" . ไอเอสโอ 26 พฤษภาคม 2557 . สืบค้นเมื่อ7 มิถุนายน 2557 .
  12. เฟอร์กูสัน, แอนดรูว์. "ประวัติภาษาโปรแกรมคอมพิวเตอร์" . cs.brown.edu .
  13. ^ เบเยอร์ 2009 , p. 282.
  14. เกอร์เรอร์ เดนิส (1 มิถุนายน พ.ศ. 2545) "สตรีผู้บุกเบิกด้านวิทยาการคอมพิวเตอร์". SIGCSE กระทิง 34 (2): 175–180. ดอย : 10.1145/543812.543853 . ISSN 0097-8418 . S2CID 2577644 .  
  15. ↑ เบเยอร์ 2009 , pp. 281–282 .
  16. สมเมต 1978ก , พี. 200.
  17. ^ Flahive, พอล (24 พฤษภาคม 2019). "วิธีที่โคบอลยังคงขับเคลื่อนเศรษฐกิจโลกเมื่ออายุ 60 ปี" . วิทยุสาธารณะเท็กซัเก็บถาวรจากต้นฉบับเมื่อ 24 พฤษภาคม 2019 . สืบค้นเมื่อ19 กรกฎาคม 2019 .(เกรซ ฮอปเปอร์) ชื่อเล่น คุณยาย โคบอล รหัสนี้มาจากงานบางชิ้นก่อนหน้านี้ของเธอ เธอพูด - หลังจากได้ยินข่าวลือ - หนึ่งในเพื่อนร่วมงานของเธอออกไปซื้อหินแกรนิตที่หลุมฝังศพ "เขามีคำว่า COBOL ตัดไว้ข้างหน้า แล้วเขาก็ส่งไปเก็บให้นายฟิลลิปส์ในเพนตากอน" การเล่นตลกกับชาร์ลส์ ฟิลลิปส์ ผู้นำโครงการที่กระทรวงกลาโหมได้รับความสนใจจากมหาอำนาจและเป็นจุดเปลี่ยนที่เธอกล่าว ภาษาโคบอลจะกลายเป็นภาษาคอมพิวเตอร์ที่ใช้กันอย่างแพร่หลายและยาวนานที่สุดในประวัติศาสตร์
  18. ^ เบเยอร์ 2009 , p. 283.
  19. ^ เบเยอร์ 2009 , p. 284.
  20. ^ "การประชุมช่วงต้นของการประชุมว่าด้วยภาษาของระบบข้อมูล" พงศาวดาร IEEE ของประวัติศาสตร์คอมพิวเตอร์ 7 (4): 316–325. 2528. ดอย : 10.1109/MAHC.1985.10047 . S2CID 35625728 . 
  21. อรรถa b c d e Sammet 2004 , p. 104.
  22. ^ เบเยอร์ 2009 , p. 286.
  23. อรรถเป็น คอนเนอร์ 1984 , พี. ไอดี/9.
  24. สมเมต 1978ก , พี. 201.
  25. อรรถa b c d Bemer 1971 , p. 132.
  26. ^ เบเยอร์ 2009 , p. 288.
  27. สมเมต 1978ก , พี. 203.
  28. ^ CODASYL 1969 , § I.2.1.1.
  29. สมเมต 1978ก , พี. 204.
  30. ^ CODASYL 1969 , § I.1.2.
  31. ^ เบเยอร์ 2009 , p. 290.
  32. แซมเม็ต, ฌอง (1978). "ประวัติศาสตร์ยุคต้นของโคบอล". ประกาศ ACM SIGPLAN 13 (8): 121–161. ดอย : 10.1145/960118.808378 . S2CID 10743643 . 
  33. สมเมต 1978ก , พี. 217.
  34. อดัมส์, วิคกี้ พอร์เตอร์ (5 ตุลาคม พ.ศ. 2524) กัปตันเกรซ เอ็ม. ฮ็อปเปอร์: แม่ของโคบอล อินโฟเวิลด์ ฉบับที่ 3 ไม่ 20. น. 33. ISSN 0199-6649 . 
  35. เบตต์, มิทช์ (6 มกราคม 1992) “เกรซ ฮ็อปเปอร์ แม่ของโคบอลต์ เสียชีวิต” . โลก คอมพิวเตอร์ . 26 (1): 14.
  36. ^ ลอห์, สตีฟ (2008) ไปที่: เรื่องราวของวิชาเอกคณิตศาสตร์, ผู้เล่นบริดจ์, วิศวกร, พ่อมดหมากรุก, นักวิทยาศาสตร์ไม่ฝักใฝ่ฝ่ายใด และผู้มีลัทธินอกรีต—โปรแกรมเมอร์ผู้สร้างการปฏิวัติซอฟต์แวร์ หนังสือพื้นฐาน . หน้า 52. ISBN 978-0786730766.
  37. ^ "วิศวกรซอฟต์แวร์ผู้บุกเบิกและนักออกแบบร่วมของ Cobol "
  38. อรรถเป็น เบเยอร์ 2009 , พี. 292.
  39. ^ บีเมอร์ 1971 , p. 131.
  40. ^ เบเยอร์ 2009 , p. 296.
  41. สมเมต 1978ก , พี. 221.
  42. ^ เบเยอร์ 2009 , p. 291.
  43. ^ "ประวัติโดยวาจาของกัปตันเกรซ ฮอปเปอร์" (PDF ) พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์ . ธันวาคม 2523 น. 37. เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 25 ธันวาคม 2560 . สืบค้นเมื่อ28 มิถุนายน 2557 .
  44. สมเมต 1978ก , พี. 218.
  45. มาร์กอตตี้ 1978ก , พี. 268.
  46. ↑ Sammet 1978a , pp. 205–206.
  47. ^ a b Sammet 1978a , รูปที่ 8
  48. ↑ Sammet 1978a , pp. 230–231.
  49. ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , p. 846.
  50. สมเมต 1978ก , พี. 220.
  51. สมเมต 1978ก , พี. 228.
  52. สมเมต 1978ก , พี. 210.
  53. ^ บีเมอร์ 1971 , p. 132:เราไม่สามารถหาบุคคลใดที่ยอมรับการสร้างคำย่อ "COBOL"ได้
  54. สมเมต 1978ก , พี. 210:ในวันรุ่งขึ้น ชื่อ COBOL ในที่สุดก็ตกลงที่จะเป็นตัวย่อสำหรับภาษาเชิงธุรกิจทั่วไป ขออภัย บันทึกของฉันไม่แสดงว่าใครเป็นผู้เสนอแนะ
  55. ซัลลิแวน, แพทริเซีย (25 มิถุนายน พ.ศ. 2547) "นักบุกเบิกคอมพิวเตอร์ บ็อบ เบเมอร์ 84" . เดอะวอชิงตันโพสต์ . หน้า ข 06 . สืบค้นเมื่อ28 มิถุนายน 2557 .
  56. ^ "รายงานภาษาโคบอล - บทสัมภาษณ์กับบ็อบ เบเมอร์ - บิดาแห่งโคบอล" . เก็บข้อมูลจากต้นฉบับเมื่อ 2 เมษายน 2018.
  57. ^ "รายงานภาษาโคบอล - บทสัมภาษณ์กับบ็อบ เบเมอร์ - บิดาแห่งโคบอล" . เก็บจากต้นฉบับเมื่อ 23 ธันวาคม 2546
  58. ^ เบเยอร์ 2009 , p. 293.
  59. ^ เบเยอร์ 2009 , p. 294.
  60. ^ a b "เรื่องราวของโคบอลทูมสโตน" (PDF) . รายงานพิพิธภัณฑ์คอมพิวเตอร์ . 13 : 8–9. ฤดูร้อน 2528 เก็บถาวร(PDF)จากต้นฉบับเมื่อ 3 เมษายน 2557 . สืบค้นเมื่อ29 มิถุนายน 2557 .
  61. ^ โคบอล ทูมสโตน . พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์ 1960 . สืบค้นเมื่อ29 มิถุนายน 2557 .
  62. ^ บีเมอร์ 1971 , p. 130.
  63. ^ เบเยอร์ 2009 , p. 289.
  64. ^ โคดาซิล 1969 , § I.1.1.
  65. ^ บราวน์ 1976 , พี. 47.
  66. ↑ a b c Bemer 1971 , p. 133.
  67. อรรถเป็น เบเยอร์ 2009 , พี. 297.
  68. วิลเลียมส์, แคธลีน บรูม (10 พฤศจิกายน 2555). เกรซ ฮ็อปเปอร์: พลเรือเอกแห่งทะเลไซเบอร์ สำนักพิมพ์สถาบันนาวิกโยธินสหรัฐ. ISBN 978-1612512655. OCLC  818867202 .
  69. ^ Compaq Computer Corporation: Compaq COBOL Reference Manual , Order Number: AA–Q2G0F–TK ตุลาคม 2000, หน้า xviii; Fujitsu Corporation: Net Cobol Language Referenceเวอร์ชัน 15 มกราคม 2552; IBM Corporation: Enterprise COBOL for z/OS Language Reference , เวอร์ชัน 4 รีลีส 1, SC23-8528-00, ธันวาคม 2007
  70. การ์ฟังเกล, เจอโรม (11 พฤศจิกายน พ.ศ. 2527) "ในการป้องกันของโคบอล" . โลก คอมพิวเตอร์ . 18 (24): ID/19.
  71. อรรถเป็น Bemer 1971 , พี. 134.
  72. ^ บราวน์ 1976 , พี. 48.
  73. ^ CODASYL 1969 , § I.2.2.4.
  74. ^ CODASYL 1969 , § I.2.3.
  75. อรรถa b c d Follet, Robert H.; แซมเม็ต, ฌอง อี. (2003). "มาตรฐานภาษาโปรแกรม" . ในรัลสตัน แอนโธนี; ไรลีย์, เอ็ดวิน ดี.; เฮมเมนดิงเกอร์, เดวิด (สหพันธ์). สารานุกรมวิทยาการคอมพิวเตอร์ (ฉบับที่ 4). ไวลีย์. หน้า 1467. ISBN 978-0470864128.
  76. อรรถเป็น เบเยอร์ 2009 , พี. 301.
  77. อรรถเป็น บราวน์ 1976 , พี. 49.
  78. ^ บราวน์ 1976 , พี. 52.
  79. เทย์เลอร์, อลัน (2 สิงหาคม พ.ศ. 2515) "มีน้อยคนที่ตระหนักถึงทรัพยากรที่สูญเปล่าของโรงเรียน DP ในท้องถิ่น " โลก คอมพิวเตอร์ . 6 (31): 11
  80. ไทรแอนซ์ เจเอ็ม (1974). การเขียนโปรแกรมในภาษาโคบอล: หลักสูตรการบรรยายทางโทรทัศน์สิบสองรายการ . สำนักพิมพ์มหาวิทยาลัยแมนเชสเตอร์. หน้า 87. ISBN 978-0719005923.
  81. ^ ไคลน์ 2010 , พี. 16.
  82. แบร์ด, จอร์จ เอ็น.; โอลิเวอร์, พอล (พฤษภาคม 1977). "มาตรฐาน 2517 (X3.23–1974)" มาตรฐานภาษาการเขียนโปรแกรม—ใครบ้างที่ต้องการมาตรฐานเหล่านี้ (PDF) (รายงาน). กรมทหารเรือ . น. 19–21. เก็บถาวร(PDF)จากต้นฉบับเมื่อ 7 มกราคม 2014 . สืบค้นเมื่อ7 มกราคม 2014 .
  83. คัลเลตัน, จอห์น อาร์. จูเนียร์ (23 กรกฎาคม พ.ศ. 2518) "ความพร้อมใช้งาน 'Spotty' ปัญหา ... " Computerworld . 9 (30): 17.
  84. ซิมมอนส์, วิลเลียมส์ บี. (18 มิถุนายน พ.ศ. 2518) "ผู้เขียนรายงานของโคบอลต์คิดถึงมาร์คจริงๆ หรือเปล่า" . โลก คอมพิวเตอร์ . 9 (25): 20.
  85. ชูร์, ริต้า (26 มกราคม พ.ศ. 2524) "ผู้ใช้ขู่ว่าจะใช้ Ansi Cobol-80 " โลก คอมพิวเตอร์ . 15 (4): 1, 8
  86. ชูร์, ริต้า (26 ตุลาคม พ.ศ. 2524) "DPMA ยืนหยัดต่อต้านร่างโคบอล " โลก คอมพิวเตอร์ . 15 (43): 1–2.
  87. a b c Gallant, John (16 กันยายน พ.ศ. 2528) "มาตรฐานโคบอลที่แก้ไขอาจพร้อมใช้ในช่วงปลายปี ค.ศ. 85" . โลก คอมพิวเตอร์ . 19 (37): 1, 8
  88. ^ a b "ผู้เชี่ยวชาญกล่าวถึงมาตรฐาน Cobol 85" . โลก คอมพิวเตอร์ . 19 (37): 41, 48. 16 กันยายน 2528
  89. พอล, ลัวส์ (15 มีนาคม พ.ศ. 2525) "การตอบสนองต่อ Cobol-80 เชิงลบอย่างท่วมท้น" . โลก คอมพิวเตอร์ . 16 (11): 1, 5.
  90. ^ พอล โลอิส (25 เมษายน 2526) "การศึกษาพบว่ามีปัญหาเล็กน้อยในการเปลี่ยนมาใช้ Cobol-8X " โลก คอมพิวเตอร์ . 17 (17): 1, 6
  91. กิลลิน, พอล (19 พฤศจิกายน พ.ศ. 2527) "ผู้ใช้ DEC เริ่มต้นใช้งาน Cobol-80ได้ " โลก คอมพิวเตอร์ . 18 (47): 1, 6
  92. การ์ฟังเกล 1987 , p. 150.
  93. ^ รอย เอ็มเค; Dastidar, D. Ghost (1 มิถุนายน 1989) "คุณสมบัติของ COBOL-85" การเขียนโปรแกรมภาษาโคบอล: ปัญหาและแนวทางแก้ไข (ฉบับที่ 2) การศึกษา McGraw-Hill หน้า 438–451. ISBN 978-0074603185.
  94. ^ โรบินสัน, ไบรอัน (9 กรกฎาคม 2552). "Cobol ยังคงเก่าที่เอเจนซี่แม้จะแสดงอายุ" . เอฟซี ดับเบิ้ลยู. กลุ่มสื่อภาครัฐ. สืบค้นเมื่อ26 เมษายน 2557 .
  95. ^ a b "มาตรฐานโคบอล" . ไมโครโฟกัส เก็บถาวรจากต้นฉบับเมื่อ 31 มีนาคม 2547 . สืบค้นเมื่อ2 กันยายน 2557 .
  96. ^ "NetCOBOL สำหรับ .Net " netcobol.com . จีทีซอฟต์แวร์. 2556. เก็บถาวรจากต้นฉบับเมื่อ 8 กรกฎาคม 2557 . สืบค้นเมื่อ29 มกราคม 2014 .
  97. ^ "รายการคุณสมบัติ Codasyl Cobol" . โลก คอมพิวเตอร์ . 18 (37): ID/28. 10 กันยายน 2527 . สืบค้นเมื่อ8 มิถุนายน 2557 .
  98. ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , ภาคผนวก ฉ.
  99. ^ ไคลน์ 2010 , พี. 21.
  100. ^ a b "JTC1/SC22/WG4 – โคบอล" . ไอเอสโอ 30 มิถุนายน 2553. เก็บข้อมูลจากต้นฉบับเมื่อ 14 กุมภาพันธ์ 2557 . สืบค้นเมื่อ27 เมษายน 2557 .
  101. ^ บิลแมน จอห์น; Klink, Huib (27 กุมภาพันธ์ 2551). "ความคิดเกี่ยวกับอนาคตของมาตรฐานโคบอล" (PDF) . เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 11 กรกฎาคม 2552 . สืบค้นเมื่อ14 สิงหาคม 2014 .
  102. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , ภาคผนวก จ.
  103. ชริกเกอร์, ดอน (2 ธันวาคม พ.ศ. 2541). "J4: มาตรฐานโคบอล" . ไมโครโฟกัส เก็บถาวรจากต้นฉบับเมื่อ 24 กุมภาพันธ์ 2542 . สืบค้นเมื่อ12 กรกฎาคม 2557 .
  104. คิซิออร์, โรนัลด์ เจ.; คาร์, โดนัลด์; ฮาลเพอร์น, พอล. "โคบอลมีอนาคตหรือไม่" (PDF) . การดำเนินการประชุมวิชาการระบบสารสนเทศ พ.ศ. 2543 17 (126). เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 17 สิงหาคม 2559 . สืบค้นเมื่อ30 กันยายน 2555 .
  105. ^ คาร์ & คิซิออร์ 2003 , p. 16.
  106. ^ คาร์ & คิซิออร์ 2003 , p. 10.
  107. ^ "สมองระบายโคบอล: ผลการสำรวจ" . โลก คอมพิวเตอร์ . 14 มีนาคม 2555 . สืบค้นเมื่อ27 เมษายน 2557 .
  108. พาวเวอร์, เดวิด เอ. (25 พฤษภาคม 2559). "หน่วยงานของรัฐบาลกลางจำเป็นต้องจัดการกับระบบเก่าที่ล้าสมัย" (PDF ) สำนักงานความรับผิดชอบของรัฐบาล . หน้า 18. เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 15 มิถุนายน 2559 . สืบค้นเมื่อ19 กรกฎาคม 2019 . หน่วยงานหลายแห่ง เช่น Department of Agriculture (USDA), DHS, HHS, Justice, Treasury และ VA รายงานโดยใช้ Common Business Oriented Language (COBOL) ซึ่งเป็นภาษาโปรแกรมที่พัฒนาขึ้นในช่วงปลายทศวรรษ 1950 และต้นทศวรรษ 1960 เพื่อตั้งโปรแกรมมรดกของตน ระบบต่างๆ เป็นที่ทราบกันดีว่าหน่วยงานต่างๆ จำเป็นต้องเปลี่ยนไปใช้ภาษาที่ทันสมัย ​​บำรุงรักษาได้ ตามความเหมาะสมและเป็นไปได้
  109. ^ "โคบอลบลูส์" . สำนักข่าวรอยเตอร์ สืบค้นเมื่อ8 เมษายน 2020 .
  110. ↑ Teplitzky , ฟิล (25 ตุลาคม 2019). "การปิดช่องว่างทักษะการเขียนโปรแกรมภาษาโคบอล" . นิตยสาร IBM Systems, IBM Z . สืบค้นเมื่อ11 มิถุนายน 2020 .
  111. ^ ลี, อลิเซีย (8 เมษายน 2020). "ต้องการด่วน: ผู้ที่รู้ภาษาคอมพิวเตอร์อายุครึ่งศตวรรษ เพื่อให้รัฐสามารถดำเนินการเรียกร้องค่าสินไหมทดแทนการว่างงานได้" . ซีเอ็นเอ็น . สืบค้นเมื่อ8 เมษายน 2020 .
  112. ^ ยาว เฮเธอร์; สไตน์ เจฟฟ์; ไรน์, ลิซ่า; รอมม์, โทนี่ (17 เมษายน 2020). "การตรวจสอบสิ่งกระตุ้นและการบรรเทา coronavirus อื่น ๆ ถูกขัดขวางโดยเทคโนโลยีที่ล้าสมัยและการเปิดตัวของรัฐบาลที่เข้มงวด " เดอะวอชิงตันโพสต์ . สืบค้นเมื่อ19 เมษายน 2020 .
  113. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.9.
  114. ^ "ตารางคำสงวน" . Micro Focus Visual COBOL 2.2 การอ้างอิงภาษาโคบอล ไมโครโฟกัส สืบค้นเมื่อ3 มีนาคม 2557 .
  115. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.3.1.2.
  116. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.3.2.
  117. a b c d Shneiderman 1985 , p. 349.
  118. ^ a b ISO/IEC JTC 1/SC 22/WG 4 2001 , § F.2.
  119. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.2.
  120. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.18.
  121. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , p. 108.
  122. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , p. 896.
  123. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.2.1.
  124. ^ "ไฟล์องค์กร" . การจัดการไฟล์ . ไมโครโฟกัส 1998 . สืบค้นเมื่อ27 มิถุนายน 2557 .
  125. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.1.2.
  126. ^ Cutler 2014 , ภาคผนวก A.
  127. ^ ฮับเบลล์, ธาเน (1999). Sams สอนตัวเอง COBOL ใน 24ชั่วโมง สำนัก พิมพ์SAMS หน้า 40. ISBN 978-0672314537. LCCN  98087215 .
  128. ^ McCracken & Golden 1988 , § 19.9.
  129. ^ มีด 2014 , § 5.8.5.
  130. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 8.5.2.
  131. ^ a b ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.24.
  132. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.35
  133. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 13.18.40.
  134. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 13.18.60.3.
  135. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , p. 855.
  136. อรรถเป็น McCracken 1976 , พี. 338.
  137. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.4.
  138. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.6.3.
  139. ^ ฟิลด์ จอห์น; Ramalingam, G. (กันยายน 2542). การระบุโครงสร้างขั้นตอนในโปรแกรมภาษาโคบอลต์ (PDF ) วาง '99 . ดอย : 10.1145/381788.316163 . ISBN  1581131372.
  140. อรรถเป็น c เวียร์แมน นีลส์; Verhoeven, Ernst-Jan (พฤศจิกายน 2549) "การตรวจจับทุ่นระเบิดโคบอลต์" (PDF) . ซอฟต์แวร์: การฝึกฝนและประสบการณ์ 36 (14). ดอย : 10.1002/spe.v36:14 . เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 6 มีนาคม 2550
  141. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.
  142. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , §§ 14.9.4, 14.9.22.
  143. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § D.6.5.2.2.
  144. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , § 14.9.13.1.
  145. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , §14.9.35.1.
  146. ^ ISO/IEC JTC 1/SC 22/WG 4 2014 , p. 899.
  147. ^ a b McCracken & Golden 1988 , § 8.4.
  148. ^ ตัวอย่างของการสนับสนุนคอมไพเลอร์ALTERสามารถดูได้ดังต่อไปนี้:
  149. ^ ISO/IEC JTC 1/SC 22/WG 4 2001 , § F.1.
  150. อรรถเป็น McCracken 1976 , พี. 355.
  151. ^ โมสลีย์ เจย์ (17 มกราคม 2558). "คอมไพเลอร์โคบอลจาก MVT" . สืบค้นเมื่อ19 กรกฎาคม 2558 .
  152. Dijkstra, Edsger W. (18 มิถุนายน พ.ศ. 2518) “เราจะพูดความจริงที่อาจทำร้ายได้อย่างไร” . มหาวิทยาลัยเทกซัสออสติน EWD498 เก็บถาวรจากต้นฉบับเมื่อ 2 พฤษภาคม 2017 . สืบค้นเมื่อ29 สิงหาคม 2550 .
  153. ทอมป์กินส์, HE (1983). "ในการป้องกันการสอนภาษาโคบอลที่มีโครงสร้างเป็นวิทยาการคอมพิวเตอร์". ประกาศ ACM SIGPLAN 18 (4): 86–94. ดอย : 10.1145/948176.948186 . S2CID 33803213 . 
  154. a b Riehle 1992 , p. 125.
  155. Shneiderman 1985 , pp. 349–350.
  156. คัฟแลน, ไมเคิล (16 มีนาคม 2014). การเริ่มต้นภาษา โคบอลสำหรับโปรแกรมเมอร์ เอเปรส หน้า 4. ISBN 978-1430262534. สืบค้นเมื่อ13 สิงหาคม 2014 .
  157. สมเมต 1978ข , พี. 258.
  158. ^ รีห์ล 1992 , p. 126.
  159. ^ รีห์ล 1992 , p. 127.
  160. ^ "รหัสโคบอลและมรดกในฐานะความเสี่ยงเชิงระบบ | ระบบทุนนิยมเปล่า" . 19 กรกฎาคม 2559 . สืบค้นเมื่อ23 กรกฎาคม 2559 .
  161. แลมเมิล, ราล์ฟ; Verhoef, Chris (พฤศจิกายน–ธันวาคม 2544) “ไขปัญหา 500 ภาษา” (PDF) . ซอฟต์แวร์IEEE 18 (6): 79. ดอย : 10.1109/52.965809 . hdl : 1871/9853 . เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 19 สิงหาคม 2014
  162. ^ ฮาวกินส์ ทีเจ; Harandi, MT (เมษายน 2522) "สู่ COBOL แบบพกพามากขึ้น" . วารสารคอมพิวเตอร์ . 22 (4): 290. ดอย : 10.1093/comjnl/22.4.290 .
  163. การ์ฟังเกล 1987 , p. 11.
  164. การ์ฟังเกล 1987 , p. 15.
  165. เรย์มอนด์ เอริก เอส. (1 ตุลาคม พ.ศ. 2547) "โคบอล" . ไฟล์ศัพท์แสง เวอร์ชัน 4.4.8 . เก็บถาวรจากต้นฉบับเมื่อ 30 สิงหาคม 2014 . สืบค้นเมื่อ13 ธันวาคม 2557 .
  166. ^ บราวน์ 1976 , พี. 53.
  167. ^ CODASYL 1969 , § II.1.1.
  168. ชไนเดอร์มัน 1985 , p. 350.
  169. ^ สมเมต 2504 , p. 381.
  170. อรรถเป็น คอนเนอร์ 1984 , พี. ไอดี/10.
  171. มาร์กอตตี้ 1978ก , พี. 263.
  172. ^ คอนเนอร์ 1984 , p. ไอดี/14.
  173. ^ สมเมต 2504 , p. 380.
  174. มาร์กอตตี้ 1978ก , พี. 266.
  175. สมเมต 1978ข , พี. 255.
  176. ↑ ชไนเดอร์มัน 1985 , pp. 348–349 .
  177. ^ "สำเนาที่เก็บถาวร" . เก็บถาวรจากต้นฉบับเมื่อ 5 มีนาคม 2559 . สืบค้นเมื่อ25 กุมภาพันธ์ 2559 .{{cite web}}: CS1 maint: สำเนาที่เก็บถาวรเป็นชื่อ ( ลิงก์ )
  178. ชไนเดอร์มัน 1985 , p. 351.
  179. ^ "บทสัมภาษณ์: กองหลังโคบอล" . โลก คอมพิวเตอร์ . 18 (37): ID/29–ID/32. 10 กันยายน 2527 . สืบค้นเมื่อ8 มิถุนายน 2557 .
  180. ^ "สถาบันการศึกษาต้องการการสนับสนุนเพิ่มเติมเพื่อจัดการกับช่องว่างด้านทักษะด้านไอที" (ข่าวประชาสัมพันธ์) ไมโครโฟกัส 7 มีนาคม 2556 . สืบค้นเมื่อ4 สิงหาคม 2557 .
  181. ^ คาร์ & คิซิออร์ 2003 , p. 13.
  182. ^ แซมเม็ต ฌอง; Garfunkel, Jerome (ตุลาคม 2528) "สรุปการเปลี่ยนแปลงในภาษาโคบอลต์ พ.ศ. 2503-2528" พงศาวดารของประวัติศาสตร์คอมพิวเตอร์ 7 (4): 342. ดอย : 10.1109/MAHC.1985.10033 . S2CID 17940092 . 
  183. คุก, มาร์กาเร็ต เอ็ม. (มิถุนายน 2521). Ghosh, Sakti P.; Liu, Leonard Y. (สหพันธ์). สิ่งอำนวยความสะดวกฐานข้อมูลสำหรับ COBOL 80 (PDF ) การประชุมคอมพิวเตอร์แห่งชาติ พ.ศ. 2521 อนาไฮม์ แคลิฟอร์เนีย: AFIPS Press น. 1107–1112. ดอย : 10.1109/AFIPS.1978.63 . วช . 55-44701 . สืบค้นเมื่อ2 กันยายน 2557 . วันที่แรกสุดที่มาตรฐาน COBOL ใหม่สามารถพัฒนาและอนุมัติได้คือปี 1980 [...]  
  184. ^ "มติจากการประชุม WG4 24 – 26-28 มิถุนายน 2546 ที่ลาสเวกัส รัฐเนวาดา สหรัฐอเมริกา " 11 กรกฎาคม 2546 น. 1. เก็บถาวรจากต้นฉบับ(doc)เมื่อวันที่ 8 มีนาคม 2559 . สืบค้นเมื่อ29 มิถุนายน 2557 . การแก้ไขมาตรฐานโคบอลในเดือนมิถุนายน 2551
  185. แบ็บค็อก, ชาร์ลส์ (14 กรกฎาคม พ.ศ. 2529) "ส่วนเสริมมาตรฐานของโคโบลหลุดลุ่ย" . โลก คอมพิวเตอร์ . 20 (28): 1, 12.
  186. มาร์กอตตี้ 1978ข , พี. 274.
  187. ^ สามารถเห็นได้ใน:
  188. คัฟแลน, ไมเคิล (2002). "ความรู้เบื้องต้นเกี่ยวกับโคบอล" . สืบค้นเมื่อ3 กุมภาพันธ์ 2557 .

ที่มา

ลิงค์ภายนอก