<<*Ask*>> Elements

•Opening '<<' and closing '>>' to designate the scope of the command. (Remember: the red and blue colors used in these examples is not important. We add color only for emphasis and clarity.)

•The term "*AskOptions*", "*AskOptional*", "*AskRepeat*", "*AskValue*" (depending upon the nature of the command) followed by the !group! name. Of course, this group name will relate the answer to the ask prompt to Options/Optional blocks in the body of the document.

o<<*AskOptions*>> blocks: list the choices you want to present to the end user. Separate each choice with a '/'. Close the list with a '*'.

E.g.,<<*AskOptions*!shipmethod!FedEx/UPS/USPS*>>and later in the document:Your order will be sent by <<*Options*!shipmethod!Federal Express (2 day delivery)/United Parcel Service (ground; allow 4 days for delivery)/US Postal Service (1st class mail).>>

o<<*AskOptional*>> blocks: pose the question that you want the end user to answer. Close the question with a '*'.

E.g.,

<<*AskOptional*!freeshipping!Will shipping be free*>>and later in the document<<*Optional*!freeshipping!*Plus, if you place your order in the next 30 days, your shipping is free!>>

oFor <<*AskRepeat*>> blocks, pose the question that you want the end user to answer. Close the question with a "*".

E.g., <<*AskRepeat*!NumCdn!*How many chilren?>> See discussion on how Pathagoras handles the repeats 'count' with Options blocks beginning this page of the Manual.

oFor <<*AskValue*>> blocks, you can ask a question that you want the end user to answer. Close the question with a "*".

E.g., <<*AskValue*!Score!*>>or<<*AskValue*!Score!Test Score?*>>and later in the document<<*Options*!Score!0-59/60-69/70-79/80-89/90-100*F/D/C/B/A>>

Note the placement of the administrative "*" (asterisks). Just like in a regular <<*Options/Optional*>> block, the stars close the administrative section. The administrative section includes any questions that are posed. (As used in Pathagoras, the 'administrative section' of a command is set apart by "*s"from the text that is intended to remain in the document. In an <<*Ask*>> block, it is all 'administrative text' since none of it remains in the document.)

Each Ask command must reside on its own line. It cannot reside on the same line as another Ask command, nor can any other text be combined with it.

The Ask commands, collectively, constitute the Interview phase of document assembly. As such, the commands should appear at the top of the document, or in a separate document that was written solely for purposes of conducting an interview and calls on other documents or building blocks in response to the interview answers. You should avoid interspersing Ask commands within the document body. Pathagoras will likely not crash if you do, but it is not considered a best practice.

Administrative text:

We need to make sure you understand how Pathagoras marks out what it calls ‘administrative text’ and address the confusion that ofter arises when administrative text concepts collide with *Aliases*.

Administrative text is that part of an options or optional block that is either pure Pathagoras code, or which you are using to instruct the end user (i.e., prompts and choices).

All administrative text is removed when the block is processed. The ‘third’ asterisk in a typical command line (if a third asterisk exists) marks the end of the administrative text.

Next, an ‘alias’ call is a piece of text surrounded by stars (same as asterisks) that represents a list of choices. (In this explanation, even though ‘stars’ and ‘asterisks’ are the identical character, I use them in this ‘lesson’ as if they are different.)

Now to the meat of the lesson.

An <<*AskOptions . . . .>> call is pure administrative text. None of it will remain in the completed document. It’s all ‘command’ and ‘prompt’ text. Therefore, it ends with an asterisk. So you might have something that looks like this:

<<*AskOptions(radio)*!Signer!*LoanOfficer**>>

(Imaging replacing *LoanOfficers* with Joe/Mike/Mary/Susan. You would have this:

<<*AskOptions(radio)*!Signer!Joe/Mike/Mary/Susan*>>, you can see how the ‘3rd ‘ asterisk closes the administrative text. (It's just easier to ‘pretend’ the stars in *alias* are not really there.)

An Options block, on the other hand, is administrative command + prompts (if any) closed by an asterisk (the administrative portion), followed by text, all or some of which text may remain in the document. Therefore, in your setup, the Administrative text is:

<<*Options*Signer!* and no more. The rest of the block is either going to be your list of names “Joe/Mike/Mary/Susan”, or the alias representing those names. Since here, we want to represent those names using an alias, this is the proper construct:

<<*Options*!Loan Officer!**LoanOfficers*>>

It is confusing at first (and maybe at second, third and fourth), but there is a method to the madness. Once you can visualize the ‘stars’ of an alias as being integrally connected, and the asterisk that closes administrative text is an entirely different entity.

I recognize that is would have been easier to not use stars in both places, but the routines developed quite independently from each other (aliases was developed solely as an Instant Database routine), and by the time I realized I could Options and Aliases together, it was too late to modify the ‘*’ coding. (Besides, when programming a ‘plain text’ system such as Pathagoras, there are only so many characters at my disposal.)

So long story short. This is the code you want (colors only for emphasis; optional and never requiredJ