2011-07-12 115 views

回答

3

究竟是什麼問題? COBOL還是算法?我猜測它的COBOL。

我不會給你一個直接的答案,因爲你是 明顯傾向於語言,並且有自己的具體細節 有價值。

這裏有一對夫婦的提示:

WORKING-STORAGE定義日期字段,以便您可以挑選出日,月和年作爲單獨項目。例如:

01 TEST-DATE. 
    05 TEST-DAY  PIC 99. 
    05    PIC X. 
    05 TEST-MONTH PIC 99. 
    05    PIC X. 
    05 TEST-YEAR PIC 9999. 

請注意未命名的PIC X字段。這些包含日/月/年分隔符。他們不需要給出數據名稱,因爲 您不需要引用它們。有時這種類型的數據項的名稱是 FILLER,但名稱是可選的。

請閱讀EVALUATE聲明。這是IBM企業COBOL手冊的link至 。在所有版本的COBOL中,EVALUATE的描述應該相似。

MOVE感興趣的日期TO TEST-DATE。現在您可以將年,月和日作爲單個項目參考:TEST-DAY,TEST-MONTHTEST-YEAR

使用EVALUATE測試月份(TEST-MONTH)。如果月份是30天的月份,那麼MOVE 30到TEST-DAY。 31天的月份也一樣。二月是閏年的特例。一旦確定該月份是2月份,則根據測試結果, 測試TEST-YEARdetermine if it is a leap yearMOVE 28或29至TEST-DAY

現在TEST-DATE將包含您正在尋找的日期。 MOVE它到任何需要的地方。

0

您可以使用函數integer-of-date給出返回與任何日期對應的整數值。假設您的輸入日期格式爲ddmmyyyy,並且您希望輸出格式相同。可以說日期是20011999,你想要的是31011999.你可以按照下面的步驟。

  • 將輸入日期的月份增加1。 (20 * 02 * 1999年)
  • 讓天爲01,並使用函數整數過期(* * 021999)
  • 減一整數返回。
  • 使用函數date-of-integer將會給你所需的結果。

請注意,在這裏您需要添加一個檢查來處理12月份的月份。

相關問題