55 lines
4.1 KiB
Rexx
55 lines
4.1 KiB
Rexx
/*REXX program illustrates a method of enumeration of constants via stemmed arrays. */
|
|
fruit.=0 /*the default for all possible "FRUITS." (zero). */
|
|
fruit.apple = 65
|
|
fruit.cherry = 4
|
|
fruit.kiwi = 12
|
|
fruit.peach = 48
|
|
fruit.plum = 50
|
|
fruit.raspberry = 17
|
|
fruit.tomato = 8000
|
|
fruit.ugli = 2
|
|
fruit.watermelon = 0.5 /*◄─────────── could also be specified as: 1/2 */
|
|
|
|
/*A method of using a list (of some fruits).*/
|
|
@fruits= 'apple apricot avocado banana bilberry blackberry blackcurrant blueberry baobab',
|
|
'boysenberry breadfruit cantaloupe cherry chilli chokecherry citron coconut',
|
|
'cranberry cucumber currant date dragonfruit durian eggplant elderberry fig',
|
|
'feijoa gac gooseberry grape grapefruit guava honeydew huckleberry jackfruit',
|
|
'jambul juneberry kiwi kumquat lemon lime lingenberry loquat lychee mandarin',
|
|
'mango mangosteen nectarine orange papaya passionfruit peach pear persimmon',
|
|
'physalis pineapple pitaya pomegranate pomelo plum pumpkin rambutan raspberry',
|
|
'redcurrant satsuma squash strawberry tangerine tomato ugli watermelon zucchini'
|
|
|
|
/*╔════════════════════════════════════════════════════════════════════════════════════╗
|
|
║Parental warning: sex is discussed below: PG─13. Most berries don't have "berry" in║
|
|
║their name. A berry is a simple fruit produced from a single ovary. Some true ║
|
|
║berries are: pomegranate, guava, eggplant, tomato, chilli, pumpkin, cucumber, melon,║
|
|
║and citruses. Blueberry is a false berry; blackberry is an aggregate fruit; ║
|
|
║and strawberry is an accessory fruit. Most nuts are fruits. The following aren't║
|
|
║true nuts: almond, cashew, coconut, macadamia, peanut, pecan, pistachio, and walnut.║
|
|
╚════════════════════════════════════════════════════════════════════════════════════╝*/
|
|
|
|
/* ┌─◄── due to a Central America blight in 1922; it was*/
|
|
/* ↓ called the Panama disease (a soil─borne fungus)*/
|
|
if fruit.banana=0 then say "Yes! We have no bananas today." /* (sic) */
|
|
if fruit.kiwi \=0 then say "We gots " fruit.kiwi ' hairy fruit.' /* " */
|
|
if fruit.peach\=0 then say "We gots " fruit.peach ' fuzzy fruit.' /* " */
|
|
|
|
maxL=length(' fruit ') /*ensure this header title can be shown*/
|
|
maxQ=length(' quantity ') /* " " " " " " " */
|
|
say
|
|
do p =0 for 2 /*the first pass finds the maximums. */
|
|
do j=1 for words(@fruits) /*process each of the names of fruits. */
|
|
@=word(@fruits, j) /*obtain a fruit name from the list. */
|
|
#=value('FRUIT.'@) /* " the quantity of a fruit. */
|
|
if \p then do /*is this the first pass through ? */
|
|
maxL=max(maxL, length(@)) /*the longest (widest) name of a fruit.*/
|
|
maxQ=max(maxQ, length(#)) /*the widest width quantity of fruit. */
|
|
iterate /*j*/ /*now, go get another name of a fruit. */
|
|
end
|
|
if j==1 then say center('fruit', maxL) center("quantity", maxQ)
|
|
if j==1 then say copies('─' , maxL) copies("─" , maxQ)
|
|
if #\=0 then say right( @ , maxL) right( # , maxQ)
|
|
end /*j*/
|
|
end /*p*/
|
|
/*stick a fork in it, we're all done. */
|