Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ovning2.
- ***********************************************************
- * Bertil - ovning2
- ***********************************************************
- ENVIRONMENT DIVISION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 switches.
- 05 is-over-aged-switch PIC X(1) VALUE 'N'.
- 88 is-over-aged VALUE 'Y'.
- 05 is-not-born-switch PIC X(1) VALUE 'N'.
- 88 is-not-born VALUE 'Y'.
- 01 date-now.
- 05 char-year PIC X(4) VALUE SPACE.
- 05 char-mmdd PIC X(4) VALUE SPACE.
- 01 numeric-year PIC 9(4) VALUE ZERO.
- 01 p-number.
- 05 p-year PIC 9(4) VALUE ZERO.
- 05 p-month-day PIC 9(4) VALUE ZERO.
- 05 p-last-digits.
- 10 p-1st-ldigit PIC 9 VALUE ZERO.
- 10 p-2nd-ldigit PIC 9 VALUE ZERO.
- 10 p-3rd-ldigit PIC 9 VALUE ZERO.
- 10 p-4th-ldigit PIC 9 VALUE ZERO.
- 01 user-age PIC 99 VALUE ZERO.
- * Calculate age exact, on the day
- 01 numeric-date-mmdd PIC 9(4) VALUE ZERO.
- 01 user-age-correction PIC S9 VALUE ZERO.
- * Boy or girl variables
- 01 numeric-result PIC 9 VALUE ZERO.
- 01 numeric-remainder PIC 9 VALUE ZERO.
- 01 user-age-group PIC X(10) VALUE SPACE.
- 01 user-gender PIC X(6) VALUE SPACE.
- 01 headline PIC X(70) VALUE ALL '-'.
- 01 accept-choice PIC X(1) VALUE SPACE.
- *********************************************************
- PROCEDURE DIVISION.
- ovning2.
- DISPLAY 'Enter your 12-Digits Security Number: '
- '(YYYYMMDDXXXX): ' WITH NO ADVANCING
- ACCEPT p-number
- IF ( p-number(1:2) = 19 OR p-number(1:2) = 20 )
- PERFORM B100-calculate-user-age-data
- EVALUATE TRUE
- WHEN is-over-aged
- DISPLAY headline
- DISPLAY 'You are > 99 Years Old. Wow!'
- DISPLAY headline
- WHEN is-not-born
- DISPLAY headline
- DISPLAY 'You Misstyped The Number. '
- 'You Are Not Born Yet!'
- DISPLAY headline
- WHEN ( NOT is-over-aged ) OR ( NOT is-not-born )
- DISPLAY headline
- DISPLAY 'You are a ' user-gender
- DISPLAY 'Age: ' user-age ' years.'
- DISPLAY 'Your group are: ' user-age-group
- DISPLAY headline
- END-EVALUATE
- ELSE
- DISPLAY headline
- DISPLAY 'Did You Typed A Correct Security Number'
- ' In the Form YYYYMMDDXXXX ?'
- DISPLAY headline
- END-IF
- DISPLAY 'Press Enter to quit...'
- ACCEPT accept-choice
- GOBACK
- .
- *********************************************************
- B100-calculate-user-age-data.
- MOVE ZERO TO user-age-correction
- MOVE FUNCTION CURRENT-DATE to date-now *> "20130822"
- * Change year character string to numeric number
- MOVE char-year TO numeric-year
- * Change mmdd character string to mmdd numeric number
- MOVE char-mmdd TO numeric-date-mmdd *> "0822" --> 0822
- * Calculate user age
- COMPUTE user-age = numeric-year - p-year
- ON SIZE ERROR
- SET is-over-aged TO TRUE
- END-COMPUTE
- IF p-year > numeric-year
- SET is-not-born TO TRUE
- ELSE
- IF numeric-year = p-year AND
- numeric-date-mmdd < p-month-day
- SET is-not-born TO TRUE
- END-IF
- END-IF
- IF ( NOT is-over-aged ) OR ( NOT is-not-born )
- * Apply possible age correction based on actual date
- IF numeric-date-mmdd < p-month-day
- MOVE -1 TO user-age-correction
- END-IF
- PERFORM B101-set-user-age-group
- PERFORM B102-set-gender-for-user
- END-IF
- .
- *********************************************************
- B101-set-user-age-group.
- * Set the age-group which this user belongs to
- IF user-age < 18 THEN
- MOVE 'Child' TO user-age-group
- ELSE
- IF user-age >= 65 THEN
- MOVE 'Retired' TO user-age-group
- ELSE
- MOVE 'Adult' TO user-age-group
- END-IF
- END-IF
- .
- *********************************************************
- B102-set-gender-for-user.
- DIVIDE p-3rd-ldigit BY 2 GIVING numeric-result ROUNDED
- REMAINDER numeric-remainder
- IF numeric-remainder = 0 THEN
- *> 3rd digit is even --> female
- MOVE 'Female' TO user-gender
- ELSE
- *> 3rd digit is odd --> male
- MOVE 'Male' TO user-gender
- END-IF
- .
- *********************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement