ข้อเท็จจริง (ภาษาคอมพิวเตอร์)
| ข้อเท็จจริง | |
|---|---|
| กระบวนทัศน์ | ขั้นตอน , คำสั่ง |
| ออกแบบ โดย | บริษัท คอมพิวเตอร์ ไซเอนซ์ คอร์ปอเรชั่น , ฮันนี่เวลล์ |
| ปรากฏครั้งแรก | 1959 |
| ได้รับอิทธิพล | |
| โคบอล | |
FACTเป็นภาษาโปรแกรม คอมพิวเตอร์รุ่นแรกๆ ที่เลิกใช้ไปแล้ว ซึ่งสร้างขึ้นโดยแผนก Datamatic ของMinneapolis Honeywellสำหรับ คอมพิวเตอร์ธุรกิจ รุ่น 800ซีรีส์ในปี พ.ศ. 2492 FACT เป็นตัวย่อของ "Fully Automatic Compiling Technique" [ 1 ] ซึ่งมีอิทธิพลต่อการออกแบบภาษาโปรแกรมCOBOL
การออกแบบ FACT บางส่วนมีพื้นฐานมาจากโครงการด้านภาษาศาสตร์ที่ชื่อว่า Basic Englishซึ่งพัฒนาขึ้นประมาณปี 1925 โดยCK Ogden
ที่จริงแล้วซอฟต์แวร์นี้ได้รับการออกแบบโดยบริษัท Computer Sciences Corporation ( เฟลตเชอร์ โจนส์ , รอย นัตต์และโรเบิร์ต แอล. แพทริก) ภายใต้สัญญาจ้างกับริชาร์ด คลิพปิงเกอร์ แห่งบริษัท Honeywell
การมีส่วนร่วมในการพัฒนา COBOL
FACT มีอิทธิพลต่อการออกแบบCOBOLและเป็นหนึ่งในสามภาษาต้นแบบที่ได้รับการกล่าวถึงในคู่มือ COBOL ทุกเล่ม
มีการนำองค์ประกอบหลายอย่างของ FACT มาผสานรวมเข้ากับ COBOL:
- การกำหนดข้อมูลเป็นระดับ โดยมีรายการกลุ่มและรายการพื้นฐาน
- การกำหนดค่าเริ่มต้นให้กับข้อมูลขณะที่กำลังกำหนด (
VALUEข้อความ) - การระบุรายการค่าตัวอักษรที่จำกัดซึ่งอนุญาตให้ใช้ในฟิลด์เฉพาะ (
88รายการข้อมูลระดับ) - เครื่องมือสร้างรายงานที่ไม่ขึ้นกับขั้นตอน โดยอาศัยการระบุลักษณะของรายงานที่ต้องการ (ส่วนรายงานใน COBOL-66)
- คุณสมบัติของชื่อข้อมูล (
INหรือOFข้อความ) - การย้ายกลุ่มของรายการที่มีชื่อเดียวกัน (
MOVE CORRESPONDING) - การตรวจสอบความถูกต้องของข้อความขั้นตอน (
ON ERRORข้อความย่อย) SORTฟังก์ชันในตัว
การนำไปใช้
FACT ถูกนำมาใช้ในช่วงทศวรรษ 1960 “ลูกค้า FACT ห้ารายเขียนแอปพลิเคชันทั้งหมดโดยใช้ FACT” และ “ลูกค้า Honeywell อีกสิบสองรายใช้ FACT ในระดับที่แตกต่างกัน” [ 2 ]ซึ่งรวมถึงธนาคารและระบบจัดการสินค้าคงคลังทางทหาร กระทรวงกลาโหมของออสเตรเลียใช้ FACT ในช่วงทศวรรษ 1960 และ 1970
ตัวอย่างโปรแกรม
ตัวอย่างโค้ดต่อไปนี้จากแอปพลิเคชันการจ่ายเงินเดือนอย่างง่ายในข้อกำหนด FACTแสดงให้เห็นถึงลักษณะรูปแบบคงที่ของ FACT และความคล้ายคลึงกับ COBOL
โครงร่างไฟล์:
O 1 ราย ละเอียดไฟล์RU ( รายละเอียด) ( D ) O 2 วันที่O 3 เดือนO 4 วันO 5 ปีO 6 * บันทึกพนักงานO 7 หมายเลขพนักงาน( หมายเลขพนักงาน) O 8 * พนักงานใหม่( NW ) O 9 ชื่อO 10 อัตราO 11 การยกเว้น( ยกเว้น) O 12 หักเงินประกัน( หักเงินประกัน) O 13 มูลค่าเงินประกัน( มูลค่าเงินประกัน)O 30 I INTERNAL-FILE1 O 31 WORKING-DATA O 32 11 D BATCH-SUM O 33 11 D BATCH-NUMBER O 34 11 D BATCH-COUNT O O 35 11 D 1 SUM-OF-HOURS O 36 11 D CARDS-IN-BATCH Oข้อความอ้างอิง:
หน้า85 ขั้นตอนการออกพันธบัตรเขียนคำสั่งพันธบัตรและลบ1 ออกจากหมายเลขหน้า86 หน้า87 หมายเหตุขั้นตอนที่1 ของโปรแกรมตัวอย่างขั้นตอนต่อไปนี้ใช้เพื่อหน้า88 ตรวจสอบ ชุดข้อมูลระหว่างการอ่านบัตรหน้า89 หน้า90 ขั้นตอนการรวมเพิ่มชั่วโมงRP เข้า กับผลรวมของชั่วโมงเพิ่ม1 เข้า กับจำนวนบัตรที่เข้ามาหน้า91 ขั้น ตอนการตรวจสอบชุดข้อมูลหน้า92 หน้า93 หากผลรวมของชุดข้อมูลไม่เท่ากับผลรวมของชั่วโมงหรือจำนวนชุดข้อมูลไม่เท่ากับจำนวนบัตร ที่เข้ามาให้ดูที่ชุดข้อมูลเสียตั้งค่าผลรวมของชั่วโมงP 95 และจำนวนการ์ดในชุดเป็นศูนย์P 96 P 97 ขั้นตอน ชุดที่ไม่ดีย้อนกลับNEW - MASTER ปิดหน้ารายงานข้อผิดพลาดP 98 P 99 L ใส่ ศูนย์ลงในPRINTLINE ตั้งค่าNUM เป็น8 P 100 P 101 สร้างใส่EMPLOYNO และRP HOURS ลงใน( NUM ) จากนั้นEN และEH SUB - P 102 ดึง1 จาก CARDS-IN - BATCH และNUM ถ้าCARDS-IN-BATCH เป็นศูนย์ให้เขียนP 103 รายงาน ข้อ ผิดพลาดย้อนกลับNEW-MASTER , LEAVE PROCEDURE . GET NEXT GROUP . P 104 IF NUM IS ZERO WRITE ERROR-REPORT AND GO TO L , OTHERWISE RETURN TO P 105 BUILD . END OF PROCEDURE .คำอธิบายรายงาน:
R 1 40 รายงานข้อผิดพลาดA 2 หัวข้อหน้าHDEJ 2 F 3 หมายเลขชุด24 หมายเลข ชุด^ F 4 หมายเลขหน้า1 43 ใน หน้าข้อผิดพลาด ^ A 5 หัวข้อคอลัมน์HD 3 F 6 30 พนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมง^ F 7 60 พนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมง^ F 8 90 พนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมง^ F 9 120 พนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมง^ A 10 บรรทัดข้อผิด พลาดOO 1 F 11 1 ST EN 8 ^ F 12 1 ST RH 14 . ↑ F 13 2 ND EN 23 ^ F 14 2 ND RH 29 . ↑ F 15 3 RD EN 38 ^ F 16 3 RD RH 44 . ^R 101 4 OBONDORDER A 102 BOND-HEADING HDEJ 2 F 103 BPAGE 1 A 104 BONDORDER-LINE OO 1 F 105 M EMPLOYNO F 106 M NAMEรูปแบบรายงาน:
L 1 หัวข้อหน้า หมายเลขชุด^ ในหน้าที่มีข้อผิดพลาด ^ L 2 หัวข้อคอลัมน์ พนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงพนักงานหมายเลขชั่วโมงL 3 บรรทัด ที่มีข้อผิดพลาด^ . ^ ^ . ^ ^ . ^ ^ . ^ ^ . ^ ^ . ^ ^ . ^ ^ . ^ L 4 หัวข้อ พันธบัตรคำสั่งซื้อพันธบัตรพนักงานหมายเลขชื่อ วันที่หน้า พันธบัตร^ L 5 บรรทัดคำสั่งซื้อพันธบัตร^ ^ ^ - ^ - ^ . ^ L 6 หัวข้อการเลิกจ้างการสิ้นสุดการจ้างงานพนักงานหมายเลขวันที่ชื่อ พันธบัตร CR . ยอดรวม.. ภาษีมูลค่าเพิ่มประกันสังคมภาษีรายได้หน้า ^ L 7 บรรทัดที่ลบ^ ^ - ^ - ^ ^ . ^ . ^ . ^ . ^ . ^ L 8 หัวข้อข้อผิดพลาด ข้อผิดพลาด... หมายเลขพนักงานวันที่ ประเภท หน้า ^ L 9 บรรทัดข้อ ผิด พลาด^ ^ - ^ - ^ ^ L 10 บรรทัดชื่อเรื่อง วาง แบบฟอร์มเช็คในเครื่องพิมพ์L 12 1 บรรทัดการจ่ายเงิน^ ^ /^ / ^ . ^ ^ / ^ / ^ L 13 2 เพย์ไลน์. ^ . ^ . ^ . ^ . ↑ L 14 3 เพย์ไลน์^ $ **** . ^ . ^ . ^