All pastes #40243 Raw Edit

Something

public text v1 · immutable
#40243 ·published 2006-02-06 03:21 UTC
rendered paste body
/****************************************************************/
/* RESERVCL - This program calculates and takes a campsite      */
/*            reservation.                                      */
/* It uses the Display File 'RESERVDF'                          */
/****************************************************************/

/* INDICATOR LIST:  */
/* 30 - PHONE_NUM   */
/* 31 - NAME        */
/* 32 - ADDR1       */
/* 33 - CITY        */
/* 34 - PROV_CODE   */
/* 35 - POST_CODE   */
/* 36 - NIGHTS      */
/* 37 - CAMPERS     */
/* 38 - TENTS       */
/* 39 - ELECTRIC    */
/* 40 - SEWER       */
/* 41 - WATER       */
/* 42 - WATERFRONT  */
/* 43 - DEPOSIT     */

PGM
    /* load the file and declare a variable for the loop */
    /* using a variable because goto breaks program flow! */
    DCLF FILE(DB233D03A1/RESERVDF)
    DCL &valid *UINT
    CHGVAR &valid 1

    /* set the defaults for the Y/N fields */
    CHGVAR &electric    'N'
    CHGVAR &sewer       'N'
    CHGVAR &water       'N'
    CHGVAR &waterfront  'N'

    SNDRCVF
    /* the screen will now wait till it's submitted */

    /* stay in this loop until F3 is pressed */

    DOWHILE COND(&IN03 *NE '1')
        /* check if a phone number has been entered */
        /* TODO: can i check the length of the data entered? */
        IF COND(&phone_num *LT 1) THEN(DO)
            CHGVAR &IN30 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE CMD(CHGVAR &IN30 '0')

        /* check if a name has been entered */
        IF COND(&name *EQ ' ') THEN(DO)
            CHGVAR &IN31 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE CMD(CHGVAR &IN31 '0')

        /* check if an address has been entered */
        IF COND(&addr1 *EQ ' ') THEN(DO)
            CHGVAR &IN32 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE CMD(CHGVAR &IN32 '0')

        /* check if a city has been entered */
        IF COND(&city *EQ ' ') THEN(DO)
            CHGVAR &IN33 '1
            CHGVAR &valid 0
        ENDDO
        ELSE CMD(CHGVAR &IN33 '0')

        /* check if a valid province has been entered */
        IF COND(&prov_code *NE 'AB' *AND +
                &prov_code *NE 'BC' *AND +
                &prov_code *NE 'MB' *AND +
                &prov_code *NE 'NB' *AND +
                &prov_code *NE 'NL' *AND +
                &prov_code *NE 'NS' *AND +
                &prov_code *NE 'NT' *AND +
                &prov_code *NE 'NU' *AND +
                &prov_code *NE 'ON' *AND +
                &prov_code *NE 'PE' *AND +
                &prov_code *NE 'QC' *AND +
                &prov_code *NE 'SK' *AND +
                &prov_code *NE 'YT')     +
        THEN(DO)
            CHGVAR &IN34 '1'
            CHGVAR &valid 0
        ENDDO
        /* if the prov_code is valid, change the description */
        /* to match the province */
        ELSE CMD(DO)
            /* this loop *is* entered */
            CHGVAR &IN34 '0'

            /* these only get changed if ALL fields are valid...weird */
            IF COND(&prov_code *EQ 'AB') +
                THEN(CHGVAR &prov_desc 'Alberta')
            IF COND(&prov_code *EQ 'BC') +
                THEN(CHGVAR &prov_desc 'British Columbia')
            IF COND(&prov_code *EQ 'MB') +
                THEN(CHGVAR &prov_desc 'Manitoba')
            IF COND(&prov_code *EQ 'NB') +
                THEN(CHGVAR &prov_desc 'New Brunswick')
            IF COND(&prov_code *EQ 'NL') +
                THEN(CHGVAR &prov_desc 'Newfoundland and Labrador')
            IF COND(&prov_code *EQ 'NS') +
                THEN(CHGVAR &prov_desc 'Nova Scotia')
            IF COND(&prov_code *EQ 'NT') +
                THEN(CHGVAR &prov_desc 'Northwest Territories')
            IF COND(&prov_code *EQ 'NU') +
                THEN(CHGVAR &prov_desc 'Nunavut')
            IF COND(&prov_code *EQ 'ON') +
                THEN(CHGVAR &prov_desc 'Ontario')
            IF COND(&prov_code *EQ 'PE') +
                THEN(CHGVAR &prov_desc 'Prince Edward Island')
            IF COND(&prov_code *EQ 'QC') +
                THEN(CHGVAR &prov_desc 'Quebec')
            IF COND(&prov_code *EQ 'SK') +
                THEN(CHGVAR &prov_desc 'Saskatchewan')
            IF COND(&prov_code *EQ 'YT') +
                THEN(CHGVAR &prov_desc 'Yukon')

        ENDDO

        /* check if the postal code is there, and in correct format */
        IF COND(&post_code *EQ ' ') THEN(DO)
            CHGVAR &IN35 '1'
            CHGVAR &valid 0
        ENDDO
        /* if it is in correct for mat, chgvar &in35 '0' */

        /* number of nights must be greater than 0 */
        IF COND(&nights *LE 1) THEN(DO)
            CHGVAR &IN36 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN36 '0')

        /* these next 4 fields must be either Y or N */
        IF COND((&electric *NE 'Y') *OR (&electric *NE 'N')) THEN(DO)
            CHGVAR &IN39 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN39 '0')

        IF COND((&sewer *NE 'Y') *OR (&sewer *NE 'N')) THEN(DO)
            CHGVAR &IN40 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN40 '0')

        IF COND((&water *NE 'Y') *OR (&water *NE 'N')) THEN(DO)
            CHGVAR &IN41 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN41 '0')

        IF COND((&waterfront *NE 'Y') *OR (&waterfront *NE 'N')) THEN(DO)
            CHGVAR &IN42 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN42 '0')

        /* the number of people and structures has to be greater than 0 */
        IF COND(&campers < 1) THEN(DO)
            CHGVAR &IN37 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN37 '0')

        IF COND(&tents < 1) THEN(DO)
            CHGVAR &IN38 '1'
            CHGVAR &valid 0
        ENDDO
        ELSE
            CMD(CHGVAR &IN38 '0')

        /* send the screen again, now that we're done parsing */
        SNDRCVF

    /* end the loop */
    ENDDO
ENDPGM