การคำนวณวันที่ในอนาคตเป็นข้อกำหนดทั่วไปในการพัฒนาซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในการใช้งานทางธุรกิจ เช่น ระบบการเรียกเก็บเงินและการกำหนดเวลา ในภาษาต่างๆ เช่น Java หรือ Python งานนี้อาจตรงไปตรงมาเนื่องจากมีไลบรารีและฟังก์ชันในตัว อย่างไรก็ตาม ในภาษาเก่าๆ เช่น โคบอล งานนี้สามารถพิสูจน์ได้ว่าซับซ้อนกว่า เนื่องจากเรามักจะต้องคำนึงถึงปัจจัยต่างๆ เช่น ปีอธิกสุรทิน
แผนกการระบุตัวตน
รหัสโปรแกรม อนาคตวันที่
ฝ่ายข้อมูล
ส่วนการทำงานและการจัดเก็บ
01 WS-วันที่ปัจจุบัน
05 WS-ปัจจุบัน-ปี PIC 9(04)
05 WS-ปัจจุบัน-เดือน PIC 9(02)
05 WS-วันปัจจุบัน PIC 9(02)
01 WS-อนาคต-DATE
05 WS-อนาคตปี PIC 9(04)
05 WS-อนาคตเดือน PIC 9(02)
05 WS-อนาคตวัน PIC 9(02)
แผนกขั้นตอน
ยอมรับ WS-ปัจจุบัน-วันที่จากวันที่
คำนวณ WS-อนาคต-วัน = WS-ปัจจุบัน-วัน + 7
ย้าย WS-ปัจจุบัน-เดือน ไปยัง WS-อนาคต-เดือน
ย้าย WS-ปัจจุบัน-ปี ไปยัง WS-อนาคต-ปี
ถ้า WS-FUTURE-DAY > 30
เพิ่ม 1 ให้กับ WS-อนาคต-เดือน
ลบ 30 จาก WS-FUTURE-DAY
END-IF
หาก WS-อนาคต-เดือน > 12
เพิ่ม 1 ให้กับ WS-FUTURE-YEAR
ลบ 12 จาก WS-อนาคต-เดือน
END-IF
แสดง “หนึ่งสัปดาห์ต่อมาคือ” WS-FUTURE-DATE
หยุดวิ่ง
เรามาแจกแจงรหัสนี้กัน
โค้ดมีโครงสร้างอย่างไร?
โปรแกรม Cobol เริ่มต้นด้วย 'แผนกการระบุตัวตน' ซึ่งเป็นแผนกบังคับในโปรแกรม Cobol ทั้งหมด คำสั่ง 'PROGRAM-ID' ที่ตามมาจะระบุถึงโปรแกรม 'DATA DIVISION' คือส่วนที่เรากำหนดข้อมูลหรือตัวแปรทั้งหมดที่จะใช้ในโปรแกรม 'ส่วนการจัดเก็บการทำงาน' เป็นแผนกย่อยของ 'แผนกข้อมูล' ที่เราประกาศตัวแปรการทำงานของเรา: 'WS-CURRENT-DATE' และ 'WS-FUTURE-DATE' แต่ละรายการยังแบ่งออกเป็นส่วนวัน เดือน และปี 'แผนกขั้นตอน' เป็นที่ที่เราเขียนโค้ดตรรกะสำหรับการคำนวณวันที่ในอนาคต
แนวคิดการจัดการวันที่ในภาษาโคบอล
โปรแกรม Cobol ของเรายอมรับวันที่ปัจจุบันจากระบบก่อน จากนั้นจะคำนวณวันที่ในอนาคตโดยบวก 7 เข้ากับวันปัจจุบัน ถ้าวันในอนาคตเกิน 30 (หมายถึงการสิ้นสุดของเดือน) เดือนนั้นจะเพิ่มขึ้น 1 และลบ 30 ออกจากวัน กระบวนการที่คล้ายกันนี้ใช้ในการบัญชีสำหรับสิ้นปี เห็นได้ชัดว่านี่เป็นตัวอย่างง่ายๆ ที่ไม่ได้คำนึงถึงความยาวของเดือนหรือปีอธิกสุรทินที่แตกต่างกัน แต่จะสรุปขั้นตอนพื้นฐาน
โดยสรุป แม้ว่าการจัดการวันที่ในภาษา Cobol ในตอนแรกอาจดูยาก แต่ก็สามารถบรรเทาลงได้ด้วยการแบ่งวันที่ออกเป็นองค์ประกอบเล็กๆ และจัดการกับการเปลี่ยนแปลงระหว่างวัน เดือน และปีอย่างระมัดระวัง การจัดการวันที่อย่างระมัดระวังเช่นนี้ยังเป็นเครื่องเตือนใจถึงความใส่ใจในรายละเอียดที่จำเป็นในภาษาโคบอล ซึ่งสะท้อนถึงยุคต้นทางของภาษาและการใช้งานอย่างต่อเนื่องในระบบที่ความแม่นยำและความถูกต้องเป็นสิ่งสำคัญยิ่ง