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