Abundance FIGURE 1
( Figure 1 Abundance )
( This program queries your motives for joining a health club. )
( It demonstrates the use of Jaunting back in time. )
( Anything in parentheses is a comment )
( Note : the space after the " is intentional! ).
<<<DEFINE
" MFB" CHOICE Sexual-Preference
ME ( Must Enter )
" M=prefer Males F=prefer Females B=prefer Both"
EXPLAIN
( Declare a 1-byte variable that can have only the )
( values M F or B )
0 100 SMALL %-For-Health
" What % of your reason for joining the club was to improve your health"
EXPLAIN
( declare a 1-byte numeric variable )
( Abundance transparently enforces the )
( limits 0..100 )
0 100 SMALL %-For-The-Males
" What % of your reason for joining was to meet handsome males?"
EXPLAIN
0 100 SMALL %-For-The-Females
" What % of your reason for joining was to meet beautiful females?"
EXPLAIN
DEFINE>>>
<<< VALIDATE-Percentages
( a procedure to validate all three percentages. )
CULPRIT Sexual-Preference
( Hint to compiler that misunderstanding the sexual preference )
( question is likely the culprit if any subsequent MUST fails.)
FROM %-For-Health %-For-The-Males + %-For-The-Females +
( postfix addition leaves the sum on the stack )
100 = ( postfix comparison operator leaves True if the sum=100 )
" Percentages must add up to 100" MUST
( If MUST sees a false it jaunts back in time )
( to where the culprit Sexual-Preference was keyed )
( in the routine HEALTH-Club, [not to the CULPRIT statement] )
( and issues the error message, otherwise it does nothing. )
( The end user can go still further back in time than we )
( take him, by hitting the Up arrow key. If we take him back )
( too far, he can come forward in time by hitting the Down )
( arrow key. )
>>>
<<< HEALTH-Club
( The mainline procedure. )
( At any point the end user can hit the Up-Arrow key and )
( run the program back in time to the previous question. He )
( can then answer differently.)
( Depending on how the end user answers the sexual )
( preference question, he is asked different percentages )
KEYIN %-For-Health
( Abundance generates a prompt using the variable name )
( %-For-Health, the EXPLAIN string " What % of your )
( reason for joining the club was to improve your )
( health", and the limits 0..100. It invokes a mini word )
( processor to help the user enter the number. The )
( number automatically stays right justified as it is )
( entered. All conceivable validations are performed. )
ASK Sexual-Preference
( Similarly Abundance prompts for one of the letters )
( M F or B leaving the result on the stack )
CASE ( examine character on the data stack )
_ M OF ( prefers males )
KEYIN %-For-The-Males CLEAR %-For-The-Females ENDOF
_ F OF ( prefers females )
KEYIN %-For-The-Females CLEAR %-For-The-Males ENDOF
_ B OF ( prefers both )
KEYIN %-For-The-Males %-For-The-Females ENDOF
ENDCASE
VALIDATE-Percentages ( invoke cross-field verification )
>>>