home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / editors / hypsh40b.arj / HYPDEVEL.LZH / HSREF.HYP / hsref.HXP
Text File  |  1991-04-24  |  155KB  |  4,539 lines

  1. .INDEX
  2. .HEADER
  3. ~M ~TwF~TKile ~PMFile~Kf~E ~M ~TwC~TKontents ~PMContents~Kc~E ~M ~TwG~TKoto ~PMGoto~Kg~E ~M ~TwS~TKearch ~PMSearch~Ks~E ~M ~TwO~TKther ~PMOther~Ko~E ~M ~TwH~TKelp ~PMHelp~Kh~E ║~A    ~PF-~E║~A    ~PB~E║~A   ~Pb@B~E║~A    ~PF+~E║~A   ~PA@C3$$1~E║
  4. ┌──────────────────────────────────────────────────────────────────────────────┐
  5. │~DF $1 - $2 ~h/~C72√ Match~Z~C79 ~DT│
  6. └──────────────────────────────────────────────────────────────────────────────┘~i5
  7. .REMARK 
  8. Reference hyperfile for HyperShell
  9. Copyright (c) 1990,1991 N.G.Taylor
  10. Version 4 amendment level 6
  11. .
  12. .PRINT MARGIN 5
  13. .
  14. .PRINT TITLE
  15. HyperShell Reference Guide
  16. .
  17. .CHECK +fa
  18. Check both menu types
  19.  
  20. .
  21. .MENU File
  22. Type file  |T?File name
  23. List HSREF |O91;THSREF.HYP;O90
  24. ──── » ────|ZUc
  25. Command    |D?Command line
  26. DOS shell  |D
  27. ──── « ────|ZUh
  28. About     a|NHyperShell
  29. Quit  F10 q|Q
  30. .
  31. .MENU Search
  32. Title search   |A@S?Search string
  33. Search Text  F6|A@X?Search string
  34. Pick and search|SPicksrch
  35. ─────── » ─────|ZUo
  36. Add to search  |O*64;MSearch
  37. Refine search  |O*63;MSearch
  38. ─────── « ─────|ZUg
  39. Matched flag ± |ZL/
  40. ───────────────|
  41. Next matching  |F+1
  42. List matching l|A@C1
  43. Unmatched list |A@C2
  44. .
  45. .MENU Contents
  46. Contents list F2|A@C
  47. ─────── » ──────|ZUg
  48. From current    |A@C3$1
  49. Starting with   |A@C0?Starting with
  50. ────── « ───────|ZUf
  51. List sections   |A@C4Section
  52. By category     |MCategories
  53. .
  54. .MENU Categories
  55. Action codes    |A@C4Action
  56. Conditions      |A@C4Condition
  57. Function codes  |A@C4Function
  58. Modifier codes  |A@C4Modifier
  59. Reference flags |A@C4Flag
  60. Dynamic menus   |A@C4Menuspec
  61. .
  62. .MENU Goto
  63. Next frame        n|F+
  64. Matching frame    m|F+1
  65. Previous frame    p|F-
  66. Home frame         |b1
  67.  ─────── » ─────── |ZUs
  68. Backtrack one     b|B
  69. Unwind backtrack F4|b@B
  70. Revisit frame      |A@b
  71.  ─────── « ─────── |ZUc
  72. Select noted ref F5|A@R
  73. .
  74. .MENU Other
  75. Action    F8|A?What action
  76. Calculator  |SCalculator
  77. ───── » ────|ZUh
  78. Example     |FExample script
  79. Print frame |Dhp -p -o hsref $1
  80. ───── « ────|ZUs
  81. Set colours |Scolours
  82. Last error  |Sperror
  83. .
  84. .MENU Help
  85. Selecting    |NSelecting
  86. Key mappings |NKey mappings
  87. Funct. keys  |NFkeys
  88. Menu bar     |NMenu bar
  89. ────── » ────|ZUf
  90. Information i|NInfo
  91. Notation     |NNotation
  92. Colour key   |NKey
  93. ────── « ────|ZUo
  94. Paged lists  |MPaged Help
  95.  
  96. .
  97. .MENU Paged Help
  98. Control Keys |NPaged control keys
  99. Paged lists  |NPaged lists
  100. Selecting    |NSelecting
  101. .
  102. .CHECK -fax
  103. .
  104. .MENU Item
  105. Action ref  |A
  106. Menu Choice |C
  107. Title       |D
  108. Frame ref   |F
  109. Menu heading|H
  110. Note heading|J
  111. Note text   |K
  112. Menu ref    |M
  113. Note ref    |N
  114. Menu seln   |O
  115. Pop message |P
  116. Invisible   |Q
  117. Request     |R
  118. Script ref  |S
  119. Frame text  |T
  120. .
  121. .MENU Error text
  122. 1 - Operation cancelled
  123. 2 - No selection from menu
  124. 3 - End of file
  125. 4 - Cant open file
  126. 5 - File not open
  127. 6 - File open
  128. 7 - File changed
  129. 8 - At start of backtrack
  130. 9 - Divide by 0
  131. 10 - Value not expected
  132. 11 - Value expected
  133. 12 - Undefined opcode
  134. 13 - Unmatched parenthesis
  135. 14 - Syntax error
  136. 15 - Script not available
  137. 16 - Menu not available
  138. 17 - Note not available
  139. 18 - Frame not available
  140. 19 - Key not defined
  141. 20 - Invalid key code
  142. 21 - Local ref can't be noted
  143. 22 - Not at reference
  144. 23 - Key not mapped
  145. 24 - No action or disabled
  146. 25 - Invalid action code
  147. 26 - No command
  148. 27 - Env var not present
  149. 28 - Invalid dynamic menu
  150. 29 - Line too wide for screen
  151. 30 - String too long
  152. 31 - Too many lines in frame
  153. 32 - Max script reached
  154. 33 - Maximum menu size reached
  155. .
  156. .NOTE HyperShell
  157.    -------------- HyperShell Version 4 -------------
  158.    Copyright (c) Text Technology 1988,1989,1990,1991
  159. Design, Implementation and Documentation by Nick Taylor
  160. .
  161. .NOTE Paged lists
  162.  Type contents of file
  163.  Search titles or texts
  164.  Detailed directory list
  165.  Contents list
  166.  Backtrack list
  167.  Noted references list
  168. .
  169. .NOTE Paged control keys
  170.  F1 or ?    - This help
  171.  F2 or #    - Page number (*T)
  172.  F3 or PgUp - Previous page
  173.  F4 or Home - Start of list/file
  174.  F5         - Find next (*T)
  175.  F6 or /    - Search file (*T)
  176.  F8 or End  - End of file (*T)
  177.  F9         - Quit (*T Suspend list)
  178.  F10        - Quit (*T Quit list)
  179.  Return     - Select (*T Suspend)
  180.  (*T - Type file control keys)
  181. .
  182. .NOTE Info
  183.    - $9 -
  184.  Frame: $1
  185.  Title: $2
  186.  File : $3
  187.  Date : $4
  188.  Time : $5
  189.  ~ABacktrack ~O2 ~PO2A;NInfo~E with $6 entries
  190.  ~AAutoref ~O4 ~PO4A;NInfo~E
  191.  Error status $? ~C32~AClear~PYah;NInfo~E
  192. .
  193. .NOTE Menu bar
  194.  The menus on the menu bar can be
  195.  selected using their initial
  196.  letters. With a menu on display,
  197.  the options can be selected with
  198.  the initial letter of the option.
  199. .
  200. .NOTE Key mappings
  201.  The following key mappings
  202.  are always provided:-
  203.  
  204.   q     Quit HyperShell
  205.   n     Next frame
  206.   p     Previous frame
  207.   b     Backtrack one step
  208.   m     Next matching frame
  209. .
  210. .NOTE Key
  211.  A ~Mmenu~PNKey~E gives a menu.
  212.  A ~Nnote~PNKey~E displays a note.
  213.  A ~Freference~PNKey~E allows a
  214.  new frame to be selected.
  215.  An ~Aaction~PNKey~E does some
  216.  other action.
  217.  An ~Iinput field~PNKey~E permits some
  218.  value to be entered.
  219. .
  220. .NOTE Notepad
  221.  The notepad allows you to store a
  222.  reference that you may want to use
  223.  later. The INS key adds the reference
  224.  pointed at to the notepad, or the
  225.  current frame if not pointing at any.
  226.  The DEL key deletes a reference.
  227.  The NOTEPAD option on the main menu
  228.  allows you to select from the notepad
  229.  and delete unwanted references.
  230. .
  231. .NOTE Selecting
  232.  Use the cursor keys or the TAB and
  233.  SHIFT/TAB keys to move to a reference
  234.  Press RETURN to select the reference.
  235.  Press ESCAPE for the control menu, or
  236.  to cancel a menu, note or list.
  237.  
  238.  When using a mouse, move mouse to
  239.  position cursor to select a reference,
  240.  Press LEFT mouse button to select.
  241.  Press RIGHT mouse button for the
  242.  control menu or to cancel a menu,
  243.  note, or list.
  244.  
  245.  See Also:- ~NFunction keys~PNFkeys~E
  246. .
  247. .NOTE notation
  248. {param} indicates an
  249.         optional parameter
  250. {param1|param2} indicates
  251.        alternative options
  252. .
  253. .NOTE Colour choice
  254.   Select $\ground colour
  255.  
  256. ~F~BW~TKBlack~PK~E~BK  ~F~TBBlue~PB~E    ~F~TGGreen~PG~E  ~F~TCCyan~PC~E
  257. ~F~TRRed~PR~E    ~F~TMMagenta~PM~E ~F~TYBrown~PY~E  ~F~TWWhite~PW~E
  258. ~F~BW~TkGrey~Pk~E~BK   ~F~TbBlue~Pb~E    ~F~TgGreen~Pg~E  ~F~TcCyan~Pc~E
  259. ~F~TrRed~Pr~E    ~F~TmMagenta~Pm~E ~F~TyYellow~Py~E ~F~TwWhite~Pw~E
  260.  
  261.  Choose bright for blink
  262.      on backgrounds
  263. .
  264. .NOTE Fkeys
  265.  F1 Help        F2  Full Contents
  266.  F3 Backtrack   F4  Select back
  267.  F5 Notepad     F6  Search text
  268.  F7 Type file   F8  Do action
  269.  F9 DOS Shell   F10 Quit Program
  270.  
  271.  See also: ~NKey mappings~E
  272. .
  273. .CHECK +fa
  274.  
  275. .
  276. .SCRIPT Colours
  277. Y?Press escape to abort at any time.   (Return to continue)
  278. pChoose Item to change colour of
  279. V[@MItem
  280. V{@NColour choice(Fore)
  281. V]@NColour choice(Back)
  282. O$[${$]
  283. y
  284. .
  285. .SCRIPT Calculator
  286. Ve?Enter expression (x = last result $x)
  287. Vx=$e
  288. pExpr $e = $x
  289. .
  290. .CHECK +fax
  291.  
  292. .
  293. .SCRIPT perror
  294. p@MError text($?)|Error %s
  295. .
  296. .SCRIPT Picksrch
  297. pPick a word with the mouse
  298. P;Ve&P;abq
  299. A@X$e
  300. .
  301. .SCRIPT SETUP
  302. O#
  303. O16
  304. O*11
  305. -- OUwK
  306. -- OVrk
  307. -- OTWB
  308. KF1MHelp
  309. KM1HELP
  310. KH4SMENBAR
  311. KH3Paged Help
  312. K#nF+
  313. K#pF-
  314. K#bB
  315. K#mF+1
  316. K#qQ
  317. K#iNinfo
  318. K#aNHyperShell
  319. K#lA@C1
  320. Vsfirst
  321. VZ$d?
  322. VrY?Press escape to abort at any time.   (Return to continue)
  323. .
  324. .SCRIPT MENBAR
  325. ZX1;ZY1
  326. .
  327. .PRINT Section 1.
  328. .
  329. .PRINT THIS
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.              ~F------------ HyperShell Version 4 ------------~E
  337.  
  338.                            ~DDReference guide~DT
  339.  
  340.           ~FCopyright (c) Text Technology 1988,1989,1990,1991~E
  341.  
  342.          ~NDesign, Implementation and Documentation by Nick Taylor~E
  343.  
  344.                           ~FAll rights reserved~E
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.         Text Technology
  363.         66 Kennedy Avenue
  364.         Macclesfield
  365.         Cheshire
  366.         ENGLAND
  367.         SK10 3DE
  368. .
  369. .PRINT PAGE
  370. .
  371. .FRAME HyperShell Reference
  372. .TITLE Section - Introduction
  373. This hyperfile is a reference guide for use by HyperShell authors.
  374. It describes the format of the HyperShell hyperfiles and describes
  375. the specification of references, actions, functions etc. within them
  376. ~i0
  377. [1]    ~FFile Contents~K1~E        The structure of the file
  378. [2]    ~FReferences~K2~E        Reference and formatting flags
  379. [3]    ~FActions~K3~E            Command strings
  380. [4]    ~FAction modifiers~PFAction modifier functions~K4~E    Functions returning parameters
  381. [5]    ~FVariables~K5~E        Information storage
  382. [6]    ~FConditions~K6~E        Condition codes
  383. [7]    ~FRestrictions~K7~E        Limits and reserved characters
  384. [8]    ~FCodes~K8~E            Codes and settings
  385. [9]    ~FGeneral~K9~E            Miscellaneous
  386. ~i5
  387. .
  388. .PRINT SECTION 2.
  389. .
  390. .PRINT TITLE
  391. Reference Guide - Hyperfile structure
  392. .
  393. .PRINT PAGE
  394. .
  395. .FRAME File contents
  396. .TITLE Section - Hyperfile structure
  397. ╔══════════╗ ╔══════════╗                ┌── ╔═════════════════╗
  398. ║    H     ║ ║ ~F.INDEX~PFIndex~E   ║ ╔══════════╗   │   ║ ~F.REMARK~PFRemarks~E         ║
  399. ║          ║ ║══════════║ ║ ~F.HEADER~PFHeader~E  ║   │   ║ ~F.SCRIPT SETUP~PFSetup Script~E   ║
  400. ║    Y     ║ ║  ~FGLOBAL~PFGlobal Items~E  ║ ║ ~F.FOOTER~PFFooter~E  ║   │   ║ ~F.NOTE name~PFNotes~E      ║
  401. ║          ║ ║  ITEMS   ║ ╚══════════╝   │   ║ ~F.MENU name~PFMenus~E      ║
  402. ║    P     ║ ║ - ~DM OR ~DT - ║ ╔══════════╗ ──┘   ║ ~F.SCRIPT name~PFScripts~E    ║
  403. ║          ║ ║          ║ ║ OTHER    ║       ║ ~F.PRINT command~PFPrint~E  ║
  404. ║    E     ║ ║ ~F.SHARE~PFShare~E   ║ ║ ITEMS    ║       ║ ~F.CHECK flags~PFCheck~E    ║
  405. ║          ║ ╚══════════╝ ╚══════════╝ ───── ╚═════════════════╝
  406. ║    R     ║ ╔══════════╗ ─────── ╔════════╗ ╔═════════════════╗
  407. ║          ║ ║          ║ ─────┐  ║ FRAME  ║ ║ ~F.FRAME~PFFrames~E ~Fname~PFFrame Name~E     ║
  408. ║    F     ║ ║ FRAME    ║      │  ║ SPEC.  ║ ║ ~F.TITLE text~PFTitle~E     ║
  409. ║          ║ ║          ║      │  ║        ║ ╠═════════════════╣
  410. ║    I     ║ ║ ~FSPECS~PFFrames~E    ║      │  ║        ║ ║ ~F.REMARK~PFRemarks~E         ║
  411. ║          ║ ║          ║      │  ║ ~FLOCAL~PFLocal Items~E  ║ ║ ~F.NOTE name~PFNotes~E      ║
  412. ║    L     ║ ║          ║      │  ║        ║ ║ ~F.MENU name~PFMenus~E      ║
  413. ║          ║ ║          ║      │  ║ ITEMS  ║ ║ ~F.SCRIPT name~PFScripts~E    ║
  414. ║    E     ║ ║          ║      │  ║        ║ ║ ~F.PRINT command~PFPrint~E  ║
  415. ╚══════════╝ ╚══════════╝      └─ ╚════════╝ ╚═════════════════╝
  416. .
  417. .FRAME Remarks
  418. .TITLE So you know why you did it
  419.  .REMARK
  420.  text lines
  421.  
  422. A remark section can appear anywhere in the hyperfile, between
  423. other sections. It is followed by lines of text containing
  424. information for the hyperfile author only, and will not be
  425. displayed during a HyperShell session.
  426.  
  427. Remark sections can be placed before other sections to describe the
  428. function of those sections.
  429.  
  430. The section, like all sections, is terminated by the next section
  431. identifier (any line starting with '.').
  432. .
  433. .FRAME Check
  434. .TITLE To control the checker component
  435.  .CHECK {-options}{+options}
  436.  
  437. The Check specification is a single line 'section' signalling the
  438. settings of flags for use by the HyperShell Checker utility (HC).
  439. For details of the parameters, see the chapter on the HyperShell
  440. Checker in the operation guide.
  441.  
  442. This section is ignored by HyperShell, although it does signify
  443. a new section, and therefore terminates a previous section.
  444. .
  445. .FRAME Print
  446. .TITLE To control the HP printout
  447.  .PRINT command
  448.  
  449. The Print section is used to control the HyperShell Printer
  450. utility (HP). The following commands are supported by HP.
  451.  
  452.    .PRINT TITLE    take next line as title string
  453.     (can be used to change the title throughout the hyperfile
  454.    .PRINT PAGE    force new page
  455.    .PRINT SECTION prefix
  456.        define new section prefix and reset frame serial number
  457.    .PRINT THIS     print subsequent lines up to next line
  458.        starting with '.', recognizing format and highlight flags
  459.    .PRINT OFF    disable printing
  460.    .PRINT ON    enable printing
  461.  
  462. This section is ignored by HyperShell, although it does signify
  463. a new section, and therefore terminates a previous section.
  464. .
  465. .FRAME Share
  466. .TITLE sharing globals with another hyperfile
  467.  .SHARE
  468.  
  469. Indicates that the hyperfile will use the global items from a
  470. master hyperfile (the first hyperfile loaded i.e. the one named
  471. on the command line). All global notes, menus and scripts
  472. (including the SETUP script) are shared, as well as HEADER and
  473. FOOTER sections. No global items may be specified within the
  474. secondary hyperfile. If an ~FINDEX~E is needed for the hyperfile,
  475. this may be specified. Also .REMARK, .PRINT and .CHECK directives
  476. may be used. The secondary hyperfile can have local items
  477. specified with the frames.
  478.  
  479. This is used for splitting large hyperfiles, where a main entry
  480. point can always be used. It is necessary to ensure that any
  481. frame references in global items to frames in the secondary
  482. hyperfile are fully qualified (i.e. they specify the frame
  483. name and hyperfile in the form 'frame^file').
  484. ~G
  485. The ~FPreload hyperfile~E action can be used to load the
  486. secondary hyperfiles in the SETUP script of the master file.
  487.  
  488. Contents lists will only cover the current hyperfile, but a
  489. search action of the form 'A@s' will present a list of all
  490. frames in all loaded hyperfiles. 
  491. .
  492. .FRAME Header
  493. .TITLE Fixed information at the top of the frame
  494.  .HEADER
  495.  (text with ~Freferences~E and ~Fformatting~E)
  496.  
  497. The header section provides the text that will appear at the top of
  498. the frame display. By convention it contains the name and title of
  499. the frame being displayed, and may also contain date, time,
  500. hyperfile name etc.
  501.  
  502. The header section is optional. If omitted, a default title is
  503. displayed showing the frame name and title.
  504.  
  505. A 'null' header consisting of a .HEADER line followed by another
  506. '.' line may be used if each frame is to have a different form, and
  507. does not need the default title.
  508.  
  509. The header display can be suppressed for certain frames by starting
  510. the frame ~Ftitle~E with a ')' character.
  511. .
  512. .FRAME Footer
  513. .TITLE Fixed information at the bottom
  514.  .FOOTER
  515.  (text with ~Freferences~E and ~Fformatting~E)
  516.  
  517. The footer section is optional, and provides the text that will
  518. appear at the bottom of the frame display. It is usual to position
  519. it at a fixed line location (Using ~FLine positioning~E) so that
  520. it appears in the same place for each frame. The footer usually
  521. contains references that are present for all frames in the file,
  522. such as a help ~Fnote~PFNotes~E display, a function key
  523. map, a backtrack count display etc.
  524.  
  525. Alternative and conditional footer texts can be set up using the
  526. conditional hidden line flag (~~hn), and these can be triggered for
  527. each frame using the local setting flag (~~Jn) which sets the
  528. frame local flags e.g.
  529.  
  530.     .FOOTER
  531.     ~~h8Footer text one
  532.     ~~h8text one continued~~G
  533.     ~~h9~~G
  534.     Default footer text
  535.     more default footer
  536.     yet more default footer
  537.     .
  538.     
  539. The frame text can then code ~~J8 for footer text one, ~~J9
  540. for no footer and default footer text if no ~~J specified.
  541. If no default required, then only conditional lines are
  542. included. The ~~J8 can be included at the end of the first
  543. text line in the frame, or of course can be set up by actions.
  544.  
  545. If a footer is specified in this manner, then the maximum
  546. depth MUST be set up in the SETUP script using the ZF
  547. action. For the above, this would be ZF3.
  548.  
  549. Also the footer display can be suppressed for a frame by
  550. starting the frame ~Ftitle~E with a ')' character.
  551. .
  552. .FRAME Global Items
  553. .TITLE Accessible from all frames
  554. Global items are accessible from any frame in the hyperfile.
  555.  
  556. Global items are specified at the start of the hyperfile,
  557. before any frame specifications.
  558.  
  559. ~FReferences~E to global items and actions invoking global items
  560. generally start with a capital letter, whereas those to ~Flocal items~E
  561. start with a lowercase letter.
  562. .
  563. .FRAME Local Items
  564. .TITLE Accessible from one frame only
  565. Local items are only accessible from the frame which specifies them.
  566.  
  567. Local Items are specified after a frame for which they are to be
  568. local. They may only be accessed when that frame is on display,
  569. or when a paged list has been displayed from that frame.
  570.  
  571. ~FReferences~E to local items generally start with a lowercase letter.
  572. If the local item specified in a reference or action does not
  573. exist, a global item with the same name is used, if it exists.
  574. .
  575. .FRAME Setup Script
  576. .TITLE To configure the hyperfile
  577.  .SCRIPT SETUP
  578.  (limited ~Factions~E)
  579.  
  580. The setup ~Fglobal script~PFScripts~E is acted upon when the hyperfile is loaded,
  581. and when the hyperfile is re-entered after displaying frames from
  582. another hyperfile. It is used to ~Fset key mapping~Es and to set
  583. control options. An initial note display or certain other actions
  584. may also be performed at this stage, but remember that the script
  585. is used on reentry as well as at load time, so may well be executed
  586. many times when the user switches between hyperfiles. It is
  587. imperative not to do a frame display, or any action which would
  588. ultimately cause a frame display.
  589.  
  590. The setup script is optional.
  591. .
  592. .FRAME Index
  593. .TITLE For large hyperfiles
  594.  .INDEX
  595.  
  596. The .INDEX line may be present anywhere before the first frame
  597. specification. It signals that an index file is usually present for
  598. the frame. An index file is useful when the hyperfile is above a
  599. certain size, as it saves HyperShell from having to read all the
  600. way through the hyperfile to build its internal index. Opening and
  601. reading the index file has its overheads, however, so its not
  602. always helpful to have the index file in use. An index is generally
  603. of use when a hyperfile has above 30 frames of reasonable size.
  604.  
  605. The index file is maintained automatically, and is kept in the same
  606. directory as the hyperfile. It has the same name as the hyperfile,
  607. but with an extension of .HIX. If you modify the hyperfile,
  608. HyperShell will detect this and rebuild the index for you. If you
  609. delete the index, a new one will also be built. If the .INDEX line
  610. is not present, HyperShell does not try to use index files.
  611. .
  612. .FRAME Frames
  613. .TITLE The unit of display for HyperShell
  614. Frame specifications are started by a .FRAME keyword. The frame
  615. specification will terminate with the next .FRAME keyword or the
  616. end of the file. There must be at least one frame specification
  617. in a hyperfile. The frame specification includes the frame name
  618. and optional title, along with the text which is to be displayed
  619. for the frame. ~FLocal items~E may follow the frame text.
  620.  
  621. ┌───────────────────────────────────────────────────────────────┐
  622. │   .FRAME ~Fframe name~E~C70│
  623. │   .TITLE ~Ftitle text~PFtitle~E~C70│
  624. │   (~Fframe text~PFtext~E with ~Freferences~E and ~Fformatting~E)~C70│
  625. │   .MENU ~Fmenu name~PFmenus~E        \~C70│
  626. │   (options)                 \~C70│
  627. │   .NOTE ~Fnote name~PFnotes~E          \ Can be a number~C70│
  628. │   (text with references and formatting)      /    of these~C70│
  629. │   .SCRIPT ~Fscript name~PFscripts~E     /~C70│
  630. │   (actions)        /~C70│
  631. │   ~F.END~PFend~E~C70│
  632. └───────────────────────────────────────────────────────────────┘
  633. .
  634. .FRAME Frame Name
  635. .TITLE The key to the frame
  636.  .FRAME frame name
  637.  
  638. The frame name provides the key to the frame. It is very important
  639. to choose the frame name carefully. The frame name will be used to
  640. cross reference the frame from text in other frames, and it is most
  641. useful if the form of name used in open text is chosen for the frame
  642. name. It is not essential to do this, however, as other words or
  643. phrases can be cross referenced to the frame using ~Fparameter~PFParameter section~Es in
  644. the ~Fframe reference~Es, hidden from display, that refer to the real
  645. frame name.
  646.  
  647. In general, duplicate frame names should be avoided, as references
  648. cannot then uniquely identify the frame. The first such name is
  649. selected normally, although see ~FFrame selection~E for details of
  650. how duplicate frames can be selected. Also the frame stepping and
  651. backtracking operations can handle duplicate frames. Note that the
  652. HyperShell editor and checker do not support duplicate frame names.
  653.  
  654. The frame name is limited to 35 characters.
  655. .
  656. .FRAME Title
  657. .TITLE A description of the frame
  658.  .TITLE title text
  659.  
  660. This line is optional. However, note that the frame title is normally
  661. displayed in the frame display ~Fheader~E. It is also displayed in
  662. any ~Fpaged displays~E containing frame lists, and is used by the
  663. ~Fsearch selection~E to locate frames about particular topics.
  664. It is therefore reasonably important, and well worth providing.
  665.  
  666. The frame title is limited to 40 characters.
  667.  
  668. If the title for a frame starts with a ')' character, the header
  669. and footer are not displayed for that frame, and the text can use
  670. the bottom line, which is usually kept clear. This may be used for
  671. full screen displays such as those captured from other programs
  672. and translated through the editor components.
  673. .
  674. .FRAME Text
  675. .TITLE The contents of the frame
  676. The frame text comes after the frame name (and title) lines. It
  677. contains the text specific to the frame. This will be displayed
  678. between the ~Fheader~E and ~Ffooter~E sections. The text may
  679. contain embedded ~Freferences~E to other ~Fframes~E, ~Fnotes~E,
  680. ~Fmenus~E and other ~Factions~E. Frame references can either be
  681. explicitly marked or may be automatically highlighted using the
  682. ~Fautoreference~E facility.
  683.  
  684. It is recommended that frame text does not take up more than the
  685. number of lines left after the header and footer have been allowed
  686. for. If this does occur, a message is displayed indicating that
  687. further text may be displayed by pressing the PgDn key. Also it is
  688. possible to return to the first screen of a frame by pressing the
  689. Home key. A formatting trigger is provided which will force a
  690. '~Fscreen break~E' after the line in which it occurred. The frame
  691. text is displayed to a width of 80 characters, extra characters
  692. being ignored.
  693. ~G
  694. Graphic and other characters from the 256 character set may be
  695. used to draw boxes etc.
  696.  
  697. A double line box may or an area of different colour may also be
  698. drawn automatically using the area drawing flags ~~a and ~~b.
  699.  
  700. Automatic indenting of text can be performed by the use of the
  701. ~Findent flag~E ~~i.
  702.  
  703. .
  704. .FRAME Notes
  705. .TITLE Popup windows of text
  706.  .NOTE note name
  707.  (text with ~Freferences~E and ~Fformatting~E)
  708.  .
  709.  
  710. Notes are small popup windows of text which supply general
  711. information or information additional to the ~Fframe text~PFText~E. 
  712. They may contain ~Fformatting~E and ~Freference triggers~PFReferences~E.
  713.  
  714. The note name can be up to 35 characters.
  715.  
  716. Notes have a size limit of 22 lines of 76 characters. 
  717.  
  718. ~FGlobal~PFGlobal Items~E notes are used for general information in support of
  719. the main material and for help displays.
  720.  
  721. ~FLocal~PFLocal Items~E notes are used for information in support of the frame
  722. to which it is local.
  723.  
  724. Selections from a note cause the note to be cleared before
  725. continuing.
  726. .
  727. .FRAME Menus
  728. .TITLE Popup selections
  729.  .MENU menu name
  730.  (options)
  731.  .
  732.  
  733. Menus are popup items which show a list of options for selection.
  734. Each option is supplied on a separate line, and consists of the
  735. choice text, and optionally the associated action for the choice.
  736. For a menu invoked using the ~FM action~PFPopup menu display~E the options are treated as
  737. frame names, if the action string is not supplied. An action
  738. string is separated from the choice text by the '|' character.
  739. If action type indicator symbols (see ~FOptions~E) are to be used, it
  740. is good practice to line up the action separator, so that the
  741. symbols line up on the right of the menu display.
  742.  
  743. The menu name should not exceed 20 characters. There is no limit
  744. to how many items can appear in a menu, but only 20 options are
  745. displayed at a time, scrolling being performed by the selection
  746. of the scrolling option on the top and/or bottom.
  747. ~G
  748. ~X1Example:
  749.  
  750. The following menu has the actions described afterwards:-
  751.  
  752.    .MENU various
  753.    starting
  754.    help        |Nhelp
  755.    next frame  |F+
  756.    exit program|Q
  757.     .
  758.  
  759. The first option, when selected, displays the frame 'starting' in
  760. the current hyperfile.
  761.  
  762. The second option displays a global popup note called 'help'.
  763.  
  764. The third option moves to the next frame.
  765.  
  766. The fourth option quits the HyperShell program.
  767. ~G
  768. A menu may also be used as a lookup table, and referenced via the
  769. lookup modifier (e.g. Mmenuname[key]). In this case it is necessary
  770. to place the action separator directly after the option text, and
  771. to always supply the action string. If a menu is to be used with a
  772. direct index specifier (e.g. Mmenuname(3)), the action string is
  773. not normally required.
  774.  
  775. Menus can have options which are conditional. These are indicated
  776. by lines starting with a '?' or a '\' character, followed by a
  777. single character ~Fcondition code~PFconditions~E. For the '?' variant,
  778. the menu option is included in the menu if the condition is TRUE,
  779. otherwise it is excluded. For the '\' variant, the line is only
  780. included if the condition is FALSE. Thus the following menu displays
  781. different options depending on the setting of the error status.
  782.  
  783.    .MENU errors
  784.    ?sClear error status  |Y
  785.    ?sShow error status   |P$?
  786.    \sRun program         |D123
  787.    .
  788. .
  789. .FRAME Scripts
  790. .TITLE Sequences of actions
  791.  .SCRIPT script name
  792.  (limited ~Factions~E)
  793.  .
  794.  
  795. Scripts are sequences of actions, used where a simple action string
  796. or a multiple action string are not sufficient. A script can be used
  797. to display a sequence of notes, to input a number of variables to
  798. construct a command line, or for many other more complex purposes. 
  799.  
  800. Scripts are limited to 200 lines, and each line may contain a
  801. number of actions up to a maximum length of 128 characters.
  802.  
  803. A script is terminated when:-
  804.  
  805.     1.    It reaches the end, or a 'q' action
  806.     2.    A further script is called
  807.     3.    ESC is pressed to cancel a menu or other display
  808.     4.    A new frame is displayed (unless using 'f' action)
  809. ~G
  810. A number of control actions exist to allow looping and conditional
  811. branching, and ~Fexpression evaluation~E permits simple integer
  812. arithmetic to be performed on ~Fvariables~E. The ~FJump within script~E
  813. and ~FLabel in script~E actions may be used to perform control flow.
  814. ~FSubroutines~PFCall subroutine~E can exist within scripts to perform common
  815. sequences of actions.
  816.  
  817. Lines starting with a '-' sign are treated as comment lines,
  818. and are not loaded with the script. Also completely blank lines
  819. are ignored. It is helpful to have comments to explain how the
  820. script works, for when you need to change the script.
  821.  
  822. Lines in the script can be indented with spaces or tabs, and
  823. these are ignored when the script is loaded. Indentation can
  824. show the structure of a script.
  825.  
  826. A script can contain a line of the form
  827.  
  828.     +scriptname
  829.  
  830. in which case script 'scriptname' is appended to the script.
  831. Only one script can be appended, although that can itself append
  832. another script. The total number of lines is limited to 200.
  833. Subroutines can then exist in a separate script which can be
  834. appended to script wishing to use them. If this is done, the first
  835. line of the script can be a 'q' action, in case the first script
  836. runs off the end by accident. A local script of the given name is
  837. firstly looked for, and then a global script, if a local script
  838. is not found.
  839.     
  840. Scripts cannot be 'nested'. When a script calls another script
  841. the original script is cleared first, effectively 'chaining'
  842. from one to another.
  843.  
  844. An ~Fexample script~E is provided to show how the control flow
  845. actions can be used.
  846.  
  847. Also see ~FLabel in script~E for details of how problems
  848. with scripts can be dealt with.
  849. .
  850. .FRAME End
  851. .TITLE The end of the frame specification
  852. The .END keyword indicates the end of the frame specification.
  853.  
  854. It is present for historical reasons, and serves no purpose
  855. other than to indicate to the author where a frame finishes.
  856. This may therefore be omitted, as the next frame specification
  857. serves the same purpose.
  858. .
  859. .PRINT SECTION 3.
  860. .
  861. .PRINT TITLE
  862. Reference Guide - References
  863. .
  864. .PRINT PAGE
  865. .
  866. .FRAME References
  867. .TITLE Section - link references and control flags
  868. In the frame text, in the text of a popup note and in the text of
  869. a file displayed using the 'Type file' action, control sequences
  870. can exist to indicate references to other items, which are
  871. highlighted in the text, and to perform text formatting actions.
  872.  
  873. Reference control sequences have the general form:-
  874.  
  875.    ~~?text string~~E   OR   ~~?text string~~Paction string~~E
  876.  
  877. Where ? is the reference type identifier, and text string is the
  878. text to be displayed, highlighted in a manner applicable to its
  879. type, in the frame text display. action string is an optional
  880. action string which will be performed instead of the implicit
  881. action for the reference if the reference is selected.
  882.  
  883. The text string and action string elements are limited to 39
  884. characters (although a longer text string may be used where
  885. an action string is supplied).
  886. .
  887. .FRAME Frame reference
  888. .TITLE Flags ~~F and ~~f
  889. ~~Fframe name~~E
  890. ~~Freference~~PFframe name~~E
  891.  
  892. The frame reference is introduced by the ~~F or ~~f sequence. The
  893. ~~F reference adds the reference to the backtrack list, when
  894. selected. The ~~f reference replaces the top entry on the backtrack
  895. list. Thus ~~F is used for browsing or cross references, and ~~f is
  896. used for deliberate frame sequencing or hierarchical references.
  897. The ~~f type of reference is highlighted in a different manner to
  898. tell the user that selection of the reference will not allow
  899. backtracking. A ~Fparameter section~E (~~P) may be added to supply an
  900. explicit action string to be performed on selection.
  901.  
  902.     ~~Fdeleting~~PFDelete~~E     - reference to frame 'Delete'
  903. .
  904. .FRAME Note reference
  905. .TITLE Flags ~~N and ~~n
  906. ~~Nnote name~~E
  907. ~~Nreference~~PNnote name~~E
  908.  
  909. The note reference is introduced by the ~~N or ~~n sequence. The
  910. ~~N reference is a global note, whose specification occurs at the
  911. start of the hyperfile, before the first frame specification. The
  912. ~~n reference is a local note, whose specification lies within the
  913. current frame specification, after the frame text and before the
  914. next frame. A parameter section (~~P) may be added to supply an
  915. explicit action string to be performed on selection.
  916.  
  917.    ~~NHelp~~E       - reference to global note 'Help'
  918. .
  919. .FRAME File note reference
  920. .TITLE Flag ~~t
  921. ~~tfile name~~E
  922. ~~treference~~Ptfile name~~E
  923.  
  924. The file note reference is introduced by the ~~t sequence. This
  925. causes a file with a name equal to the reference (and with default
  926. extension '.NTE') to be displayed as a popup note. See the 't'
  927. action for further details. A parameter section (~~P) may be added
  928. to supply an explicit action string to be performed on selection.
  929.  
  930.     ~~tmemo~~E     - reference to file MEMO.NTE
  931. .
  932. .FRAME Menu reference
  933. .TITLE Flags ~~M and ~~m
  934. ~~Mmenu name~~E
  935. ~~Mreference~~PMmenu name~~E
  936.  
  937. The menu reference is introduced by the ~~M or ~~m sequence. The
  938. ~~M reference is a global menu, whose specification occurs at the
  939. start of the hyperfile, before the first frame specification. The
  940. ~~m reference is a local menu, whose specification lies within the
  941. current frame specification, after the frame text and before the
  942. next frame. A parameter section (~~P) may be added to supply an
  943. explicit action string to be performed on selection.
  944.  
  945.    ~~msizes~~E      - reference to local note 'sizes'
  946. .
  947. .FRAME Script reference
  948. .TITLE Flags ~~S and ~~s
  949. ~~Sscript name~~E
  950. ~~Sreference~~PSscript name~~E
  951.  
  952. The script reference is introduced by the ~~S or ~~s sequence. The
  953. ~~S reference is a global script, whose specification occurs at the
  954. start of the hyperfile, before the first frame specification. The
  955. ~~s reference is a local script, whose specification lies within
  956. the current frame specification, after the frame text and before
  957. the next frame. A parameter section (~~P) may be added to supply an
  958. explicit action string to be performed on selection.
  959.  
  960.      ~~Scalculate~~E      - reference to global script 'calculate'
  961. .
  962. .FRAME Action reference
  963. .TITLE Flag ~~A
  964. ~~Areference~~Paction string~~E
  965.  
  966. The action reference is introduced by the ~~A sequence. This form
  967. of reference contains an action which is not a frame, note, menu or
  968. script reference. It covers the miscellaneous actions whose
  969. multiplicity precludes the use of specific highlighting schemes.
  970. The action reference usually contains the parameter section (~~P
  971. sequence), as it has no implicit action. If the reference text
  972. can be used as an action, then the parameter may be omitted.
  973.  
  974.     ~~Agreen~~PPindicates safety~~E   - reference to popup message
  975. .
  976. .FRAME Input field
  977. .TITLE Flag ~~I
  978. ~~Iinput area~~Paction pattern~~E
  979.  
  980. The input field is not exactly a reference, but is used to input
  981. data to be used by the application. Its most general use is to
  982. input variable values. The input field always has reference text
  983. and a parameter section, which specifies a pattern within which
  984. the input value is substituted prior to execution.
  985.  
  986. The reference text part of the input field delimits the field, and
  987. provides the text which is to be edited to form the input to the
  988. field. If the input field is being used to set a variable, the
  989. reference text usually contains an expansion token for the variable,
  990. so that when the frame is displayed, the current value is displayed
  991. in the field and can be edited. The field should contain a width
  992. specification after any reference text, which will determine the
  993. width of the input field. If new input is always required, the
  994. field should be blank, just a width being supplied in the reference
  995. text.
  996. ~G
  997. The parameter section usually consists of a variable assignment and
  998. sometimes some other action. The parameter string provides a
  999. pattern, within which the input value is substituted. The string
  1000. can contain up to three occurences of the string '%s', each of
  1001. which will be replaced by the value when it is input.
  1002.  
  1003. An example of a line containing an input field is as follows:-
  1004.  
  1005.    Name : ~~I$$n~~W15~~PVn%s;scheckname~~E
  1006.  
  1007. This, when selected, allows the current value of variable 'n'
  1008. to be edited (up to 15 characters in length), which is the assigned
  1009. back to variable 'n' and checked using local script 'checkname'.
  1010. When displayed, this will look like (assuming variable n contains
  1011. 'Fred Jones'):-
  1012.  
  1013.    Name : ~DIFred Jones     ~DT
  1014.  
  1015. The input field may also be specified in a note, although the note
  1016. display will terminate after entry of the input field.
  1017. .
  1018. .FRAME Parameter section
  1019. .TITLE Flag ~~P
  1020. The parameter section, introduced by the ~~P sequence, permits any
  1021. action to be associated with a reference. It is usual, and helpful,
  1022. to use the same type of action as that suggested by the initial
  1023. introductory sequence, as it is that which has already determined
  1024. the highlighting scheme for the reference. If a miscellaneous
  1025. action for which there is no set colour scheme is to be performed,
  1026. the ~Faction reference~E should be used.
  1027. .
  1028. .FRAME Key mapping
  1029. .TITLE Flag ~~K
  1030. The key mapping sequence, introduced by ~~K, permits a key on the
  1031. keyboard to be mapped to the reference, such that when it is
  1032. pressed, the reference is selected. This is useful for 'menu'
  1033. frames. A key mapped using the 'K' action takes precedence over
  1034. this form of key mapping. The reference:-
  1035.  
  1036.    ~~FNext frame~~Pf+~~K ~~E
  1037.  
  1038. will have 'Next frame' highlighted as a frame reference, and will
  1039. move to the next frame when selected directly or when the space bar
  1040. is depressed.
  1041. .
  1042. .FRAME Immediate reference
  1043. .TITLE Flag ~~Q
  1044. One reference on a frame or note display may be flagged as an
  1045. 'immediate' reference, which will be selected automatically after
  1046. the frame or note text has been displayed. This is done by including
  1047. the sequence ~~Q after the complete reference sequence for the
  1048. reference to be selected. This may be used for many purposes, but the
  1049. most common would be to select the first input field on a form frame,
  1050. and therefore put the frame into a data input mode automatically on
  1051. entry.
  1052.  
  1053. The immediate reference flag may also be used with an 'invisible'
  1054. reference. This has a zero length reference string and does not
  1055. therefore permit manual selection. This could be placed in the header
  1056. or footer to, for instance, write a log file of frames visited. It can
  1057. also be used to pop up a note or a menu on moving to a frame. It may
  1058. even invoke a script which could perform a long sequence of actions.
  1059.  
  1060.     ~~A~~PNhello~~E~~Q
  1061. .
  1062. .FRAME Formatting
  1063. .TITLE Format control flags
  1064. The formatting sequences permit the frame, and note, displays to be
  1065. controlled in a number of ways. Absolute cursor positioning and
  1066. colour control are the main uses for this feature.
  1067.  
  1068. Formatting sequences can be placed within the reference text,
  1069. provided that a parameter section is provided for that reference.
  1070. This facility can be used to highlight a letter in the reference,
  1071. if that letter key is mapped to the reference.
  1072. .
  1073. .FRAME Option display
  1074. .TITLE Flag ~~O
  1075. The option display is an extended form of variable display. It
  1076. allows the state of various runtime options to be displayed as
  1077. either 'ON' or 'OFF'. The runtime options are as follows, showing
  1078. the option code, the command line flag and the option description
  1079. with the default state which is toggled by the flag.
  1080.  
  1081.    ~~O2           displays ON or OFF depending on backtrack status
  1082.  
  1083. It is possible to access options in the extended option set using
  1084. the following characters:-
  1085.  
  1086. O*0':' O*1';' O*2'<' O*3'=' O*4'>' O*5'?' O*6'@' O*7'A' O*8'B' O*9'C'
  1087.  
  1088. The special form ~~O# displays a three character field containing
  1089. current page number of a multi screen frame. This can be used with
  1090. ~Flocal flag~PFlocal flags~E '<' to show a conditional footer with the page number.
  1091. .
  1092. .FRAME Line positioning
  1093. .TITLE Flag ~~L
  1094. ~~Lnn
  1095.  
  1096. The line positioning command, introduced by the ~~L sequence,
  1097. positions the text writing cursor at the default indent of the
  1098. specified line, unless that line is before or at the current line,
  1099. or beyond the bottom of the display or footer margin. The full
  1100. form of the sequence is either ~~Ln or ~~Lnn, where n/nn is the
  1101. line number, starting from 1. Thus:-
  1102.  
  1103.    ~~L3          positions at line 3, column 1
  1104.  
  1105.    ~~L20         positions at line 20, column 1
  1106. .
  1107. .FRAME Column positioning
  1108. .TITLE Flag ~~C
  1109. ~~Cnn
  1110.  
  1111. The column positioning command, introduced by the ~~C sequence,
  1112. positions the text writing cursor at the specified column, by
  1113. outputting spaces, unless that column is before or at the current
  1114. position, or beyond the edge of the display. The full form of the
  1115. sequence is either ~~Cn or ~~Cnn, where n/nn is the column number,
  1116. starting from 1. Thus:-
  1117.  
  1118.    ~~C9           positions at column 9
  1119.  
  1120.    ~~C74          positions at column 74
  1121. .
  1122. .FRAME Width positioning
  1123. .TITLE Flag ~~W
  1124. ~~Wnn
  1125.  
  1126. The ~~W sequence, of the form ~~Wn or ~~Wnn, outputs spaces to
  1127. the display upto the specified number of column positions from
  1128. the start of the last reference, or the start of the line if no
  1129. references yet displayed.
  1130.  
  1131. This is normally used to specify the width of an ~Finput field~E.
  1132. It may, however, be used for other purposes.
  1133.  
  1134.     ~~W12         positions 12 columns from start of reference
  1135. .
  1136. .FRAME Force column position
  1137. .TITLE Flag ~~X
  1138. ~~Xnn
  1139.  
  1140. The force column position flag, introduced by the ~~X sequence,
  1141. positions the text writing cursor at the specified column of the
  1142. current line, regardless of the current position. The full form
  1143. of the sequence is either ~~Xn or ~~Xnn, where n/nn is the column
  1144. number, starting from 1. Thus ~~X34 positions at column 34.
  1145. This flag is usually used in the ~FInsert text~E action.
  1146.  
  1147. The position set by the ~~X flag can be used to start a width
  1148. range, so that the ~~W flag may be used to clear part of a line.
  1149.  
  1150. CAUTION: this flag should be used with care
  1151. .
  1152. .FRAME Force line position
  1153. .TITLE Flag ~~Y
  1154. ~~Ynn
  1155.  
  1156. The force line position flag, introduced by the ~~Y sequence,
  1157. positions the text writing cursor at the current column of the
  1158. specified line, regardless of the current line position. The full
  1159. form of the sequence is either ~~Yn or ~~Ynn, where n/nn is the
  1160. line number, starting from 1. Thus ~~Y10 positions at line 10.
  1161. This flag is usually used in the ~FInsert text~E action.
  1162.  
  1163. CAUTION: this flag should be used with care
  1164. .
  1165. .FRAME Screen break
  1166. .TITLE Flag ~~G
  1167. In the frame text, a 'new page' (or second screen) of text may be
  1168. forced after the current line by the inclusion of the screen break
  1169. trigger. The form of this sequence is ~~G, and this may occur at
  1170. any point in the line, although it is probably easiest to maintain
  1171. if placed at the end of the line.
  1172.  
  1173.       . . . . line at end of screen 1 ~~G
  1174.     Line at start of screen 2 . . . .
  1175. .
  1176. .FRAME Line break
  1177. .TITLE Flag ~~g
  1178. In frame or note text, a new line can be started by embedding this
  1179. flag in the text.
  1180.  
  1181. This is used where ~Fnamed variables~E hold text to be displayed
  1182. which occupies more than one line.
  1183.  
  1184.     This line~~gNext line
  1185. .
  1186. .FRAME Concatenate text
  1187. .TITLE Flag ~~c
  1188. ~~c
  1189.  
  1190. The ~~c flag may be placed at the end of a line, if the next line
  1191. is to be concatenated. This flag has special applications and should
  1192. not be used in open frame or note text. It is usually used with the
  1193. 'i' action to retain the text position after writing to the screen.
  1194.  
  1195. CAUTION: This flag should be used with care
  1196. .
  1197. .FRAME Hidden lines
  1198. .TITLE Flag ~~H
  1199. ~~Hc
  1200.  
  1201. Lines in the text can be excluded from a frame or other display by
  1202. putting a ~~H sequence at the start of the line. If the ~~H flag
  1203. appears after the first column, it marks the start of a hidden area
  1204. which finishes at the end of the line or at a ~~Z flag. The ~~H flag
  1205. can be used for embedding maintenance comments in frame text, which
  1206. will not be displayed.
  1207.  
  1208. ~X1See also: ~FConditional hidden lines~E
  1209. .
  1210. .FRAME Conditional hidden lines
  1211. .TITLE Flags ~~h and ~~j
  1212. ~~hc       - display text if condition c is TRUE
  1213. ~~jc       - display text if condition c is FALSE
  1214.  
  1215. These sequences provide a conditional hidden text capability.
  1216. The 'c' character is one of the general HyperShell ~Fconditions~E.
  1217. When the condition is FALSE, the ~~hc sequence acts as ~~H to hide a
  1218. complete line or part of a line terminated by ~~Z. When the condition
  1219. is TRUE, the sequence has no effect, permitting the text to be
  1220. displayed. The ~~jc sequence has the opposite effect, whereby if the
  1221. condition is TRUE the text is hidden, else it is displayed.
  1222.  
  1223. The conditional hidden text flags are generally used for information
  1224. which is ~Fexpanded 'in line'~PFlocal flag toggle~E with the main text. The frame
  1225. ~Flocal flags~E 0 to 9 are usually used for this purpose.
  1226.  
  1227. ~X1See also: ~FHidden lines~E
  1228. .
  1229. .FRAME Print suppress lines
  1230. .TITLE Flag ~~p
  1231. ~~p
  1232.  
  1233. Lines in the text which are only required for online display can be
  1234. excluded from printout when using the HP program by putting a ~~p
  1235. sequence at the start of the line. If the ~~p flag appears after the
  1236. first column, the rest of the line is not printed.
  1237. .
  1238. .FRAME Flag setting
  1239. .TITLE Flag ~~J
  1240. ~~Jn
  1241.  
  1242. The local flags 0 to 9 can be set using the ~~J flag. The sequence
  1243. sets the local flag 'n' IMMEDIATELY it is encountered. This is
  1244. used for setting the local flags to influence the frame display
  1245. or operation in some way, mainly for conditional text in the
  1246. footer section of the display, where the conditional hidden line
  1247. flag is used.
  1248.  
  1249.    ~~J3            - sets frame local flag 3
  1250.  
  1251. ~X1See Also:     ~FHidden lines~E
  1252. .
  1253. .FRAME End of hidden range
  1254. .TITLE Flag ~~Z
  1255. The ~~Z flag is used to terminate the range of a hidden or
  1256. conditionally hidden piece of text in a frame or note.
  1257.  
  1258.     start of line ~~h2Hidden text~~Z
  1259.  
  1260. ~X1See Also:     ~FHidden lines~E
  1261. .
  1262. .FRAME Text/Background colours
  1263. .TITLE Flags ~~T and ~~B
  1264. ~~Tc
  1265. ~~Bc
  1266.  
  1267. These sequences set the text colour or background colour to the
  1268. colour with code 'c'. The text can have one of 16 different
  1269. 'colours' and the background can have one of 8. It is helpful to
  1270. choose these so that they have a good contrast. And yes, if you
  1271. make them both the same, the text is invisible.
  1272.  
  1273.    ~~Tr             - set text bright red
  1274.    ~~BM             - set background magenta
  1275.  
  1276. ~X1See also:     ~FColour codes~E
  1277. .
  1278. .FRAME Display colour schemes
  1279. .TITLE Flag ~~D
  1280. ~~Ds
  1281.  
  1282. The ~~D sequence selects colour highlighting scheme 's'. There are
  1283. 26 colour schemes, mapped to the letters A to Z. The scheme letter
  1284. is specified directly after the ~~D. The colour scheme sequence
  1285. works slightly differently to the text/background settings in that
  1286. it is held over a reference display.
  1287.  
  1288. The schemes are configurable using the option setting action 'O'.
  1289.  
  1290.      ~~DM             - use menu reference colour scheme
  1291.  
  1292. ~X1See also:     ~FColour schemes~E
  1293. .
  1294. .FRAME Indent flag
  1295. .TITLE Flag ~~i
  1296. ~~in
  1297.  
  1298. The indent flag can be used to cause an indent to be added
  1299. automatically to the text in a frame display. The parameter 'n'
  1300. is a digit from 0 to 9 indicating the indent to be applied.
  1301. A value of 0 causes no indent.
  1302.  
  1303.     ~~i5             - indent the text by 5 places
  1304.  
  1305. The flag is usually placed at the end of the header to cause the
  1306. frame body text to be indented, and possibly at the start of the
  1307. footer to reset the indent before the footer.
  1308.  
  1309. Indivual lines can be reset to column 1 by prefixing them with
  1310. the sequence '~~X1'. Ranges of lines can have the indent changed
  1311. before the start and after the end.
  1312. .
  1313. .FRAME Box start
  1314. .TITLE Flag ~~a
  1315. ~~a
  1316.  
  1317. This flag indicates the TOP LEFT position of a graphic box.
  1318.  
  1319. ~X1See also: ~FBox draw~E
  1320. .
  1321. .FRAME Box draw
  1322. .TITLE Flag ~~b
  1323. ~~bt
  1324.  
  1325. This flag indicates the BOTTOM RIGHT of a box area, and causes
  1326. the area to be drawn from the top left position indicated by a
  1327. ~FBox start~E flag. The 't' parameter indicates the type of
  1328. area, as follows:-
  1329.  
  1330.     ~~b0    -- just return to position of ~~a flag
  1331.     ~~b1    -- draw a double edged box
  1332.     ~~b2    -- define a window and clear it
  1333.     ~~b3    -- draw a box, then define a window within it
  1334.     ~~b4    -- define window as full screen    (used by itself)
  1335.     ~~b6    -- clear the area without defining a window
  1336.     ~~b7    -- draw box and clear inside without defining window
  1337.  
  1338. Most of these specify window areas and are for use with the 'i' action.
  1339. Only the ~~b1 version should be used in frame displays generally.
  1340.  
  1341. CAUTION: This flag should be used with care
  1342. ~G
  1343. Example boxes
  1344.  
  1345.   ~~a                ~a
  1346.       This is in a box        --     This is in a box
  1347.                         ~~b1                ~b1
  1348.  
  1349.   ~~a                ~a
  1350.  
  1351.                ~~DJ~~b3                        ~DJ~b3
  1352. ~a Text in a box window~b4
  1353. ~Y18
  1354.  
  1355. ~DTThis feature can also be used for 'subwindows' or panelled windows,
  1356. along with the ~FTake copy of screen~E and ~FShow saved screen~E actions.
  1357.  
  1358. ~X1See also: ~FBox start~E
  1359. .
  1360. .FRAME Wait in display
  1361. .TITLE Flag ~~w
  1362. ~~ws
  1363.  
  1364. The ~~w flag causes a delay of 's' seconds before proceeding with
  1365. the display. This is used for effect.
  1366.  
  1367.     1~w12~w13
  1368.  
  1369. ~X1See also: ~FTeletype mode~E
  1370. .
  1371. .FRAME Teletype mode
  1372. .TITLE Flag ~~d
  1373. ~~d
  1374.  
  1375. The ~~d flag causes text to be slowly displayed as though by
  1376. an old fashioned teletype. The flag acts as a toggle, and is
  1377. valid for the current line only.
  1378.  
  1379. It is used for special effects, and is useful to focus attention
  1380. on the text.
  1381.  
  1382.   Type this ~dslowly at first~d and then fast
  1383.  
  1384. ~X1See also: ~FWait in display~E
  1385. .
  1386. .FRAME Flag character display
  1387. .TITLE To actually display a ~~
  1388. The ~~ character can be displayed in a frame, note or paged list
  1389. by coding it as two ~~ signs:-
  1390.  
  1391. ~~~~
  1392. .
  1393. .PRINT SECTION 4.
  1394. .
  1395. .PRINT TITLE
  1396. Reference Guide - Actions
  1397. .
  1398. .PRINT PAGE
  1399. .
  1400. .FRAME Actions
  1401. .TITLE Section - HyperShell control commands
  1402. Actions are the commands which control HyperShell.
  1403. Action specifications, including ~Fmultiple actions~E can be
  1404. supplied at a number of different places:-
  1405.  
  1406.    1. The reference action in the text.
  1407.    2. A menu action.
  1408.    3. A script action.
  1409.  
  1410. Not all forms of action specification are relevant in all places.
  1411. It is normally obvious where a particular type of action modifier
  1412. string is not applicable, or where a particular action is not
  1413. sensible. In particular, control flow actions are only relevant in
  1414. scripts (although a popup note or menu may cause a branch within a
  1415. currently executing script).
  1416. .
  1417. .FRAME Multiple actions
  1418. .TITLE A string of actions
  1419. Multiple action strings can exist in any action specification.
  1420. The actions are separated by ';' characters. Multiple actions
  1421. are permitted wherever an action specification is expected.
  1422.  
  1423.   ZX40;ZY12 - Positions the cursor in the middle of the screen.
  1424.  
  1425. The following rules apply to multiple action strings:-
  1426.  
  1427. 1. The condition of a ~Fconditional action~E affects remaining
  1428.    actions.
  1429. 2. A conditional ~Fjump within script~E does not clear remaining
  1430.    actions.
  1431. 3. The remaining actions are cleared if an error occurs in an
  1432.    action, or an input is cancelled.
  1433. 4. If a further multiple action is encountered, for instance as
  1434.    the result of an action modifier or menu selection, the
  1435.    remaining actions are cleared in the original. 
  1436. .
  1437. .FRAME Action codes
  1438. .TITLE Command letters
  1439. Action specifications start with a single letter action code, or
  1440. a double letter ~Fextended action code~PFExtended action codes~E (starting with Z).
  1441.  
  1442. An action may also have parameters supplied directly after the
  1443. code. The parameters may be supplied directly as literal strings
  1444. or indirectly via one of a number of ~Faction modifiers~PFAction Modifier functions~E.
  1445. .
  1446. .FRAME Perform action
  1447. .TITLE Action 'A'
  1448. ~X1Format:   Aactionspec
  1449.  
  1450. The 'A' action is provided to enable action modifiers returning full
  1451. action specifications to be serviced. For example the extended
  1452. directory listing modifier 'l' and the notepad listing modifier 'R'
  1453. both return action strings, and would be handled as follows:-
  1454.  
  1455.    A@l*.*
  1456.  
  1457.    A@R
  1458.  
  1459. Also the form 'A?Enter action' can be used to permit the user to
  1460. enter an action specification for execution.
  1461. .
  1462. .FRAME Conditional action
  1463. .TITLE Action 'a'
  1464. ~X1Format:   acxxxxxxx{;actionstring}{;actionstring}...
  1465.  
  1466. The 'a' action is used to execute an action or set of actions
  1467. conditionally on the setting of the condition 'c' specified.
  1468.  
  1469. This action provides a means of specifying conditional actions
  1470. without having to use scripts.
  1471.  
  1472. The condition letters are described in the ~Fconditions~E section.
  1473.  
  1474.   adpvariable not defined   - displays message if variable not set
  1475.  
  1476. ~X1See also:       ~FUnless condition~E
  1477. .
  1478. .FRAME Backtrack one step
  1479. .TITLE Action 'B'
  1480. ~X1Format:   B
  1481.  
  1482. HyperShell retains a list of frames that the user has displayed.
  1483. This list acts like a 'stack' which has a frame reference 'pushed'
  1484. when a new frame is displayed. The 'B' action 'pops' the frame
  1485. references from this stack one at a time, displaying the frame
  1486. referenced.
  1487.  
  1488. ~X1See also:       ~FMultiple backtrack~E
  1489. .
  1490. .FRAME Multiple backtrack
  1491. .TITLE Action 'b'
  1492. ~X1Format:   b{depth}
  1493.  
  1494. The 'b' action permits a number of frames to be discarded from
  1495. the backtrack list, retaining the depth specified as a numeric
  1496. parameter, where 0 represent the first frame visited in the file.
  1497. After this it displays the frame referenced at that point. This
  1498. action is usually used with the 'B' dynamic menu, to permit the
  1499. point in the list to be selected. If a frame from the backtrack
  1500. is to be revisited without winding back, the 'b' dynamic menu
  1501. should be used with the A action.
  1502.  
  1503.    b@B             Select level and unwind
  1504.  
  1505.    b3              Unwind to level of 3
  1506.  
  1507. ~X1See also:    ~FSelect backtrack~E
  1508. .
  1509. .FRAME Change drive / directory
  1510. .TITLE Action 'C'
  1511. ~X1Format:   C{Wd:}{pathname}
  1512.  
  1513. The 'C' action allows the working directory to be changed, and
  1514. optionally allows the working drive to be altered. For example:-
  1515.  
  1516.    CB:\HYPER
  1517.  
  1518.    CSUBDIR
  1519.  
  1520.    C..\HYPER2
  1521.  
  1522. The original drive:directory is held in system variable 8, and the
  1523. current drive:directory is held in system variable 7. Thus the
  1524. action 'P$$7' would display the current working drive:directory,
  1525. and the action 'C$$8' changes back to the original directory.
  1526. .
  1527. .FRAME Call script file
  1528. .TITLE Action 'c'
  1529. ~X1Format:   cscriptfile
  1530.  
  1531. The 'c' action permits a file containing a script to be executed.
  1532. The 'scriptfile' parameter may have its extension omitted, in which
  1533. case .HSF is assumed. Script files are treated as normal ~Fscripts~E,
  1534. and obey the same rules. A file script cannot be appended to a
  1535. script, but can append normal scripts itself.
  1536.  
  1537. Script files can be used as small 'programs'.
  1538.  
  1539. ~FParameters~E can be supplied on a script action.
  1540.  
  1541.    creload             - runs the script file RELOAD.HSF
  1542.  
  1543. ~X1See also        ~FExecute script~E
  1544. .
  1545. .FRAME DOS command execution
  1546. .TITLE Action 'D' and 'd'
  1547. ~X1Format:   D{ }{Command line}
  1548.      d{ }{Command line}
  1549.  
  1550. This action starts the DOS command processor to run a command or to
  1551. permit command line interaction. If a parameter is supplied, it is
  1552. issued as a command line to DOS. The command can be a DOS built-in
  1553. command, a batch file, or an external program. The command can have
  1554. parameters.
  1555.  
  1556. If the action is specified without parameters, it runs the command
  1557. line interpreter to allow the user to interact with DOS. When the
  1558. user has finished, the EXIT command is used to return to
  1559. HyperShell.
  1560.  
  1561. The uppercase form of the action indicates that when the command
  1562. has finished, a key press is required before redisplaying the
  1563. current HyperShell frame again. The lowercase form indicates that
  1564. when the command has finished, HyperShell will immediately
  1565. redisplay the current frame. The system variable '^' is set to the
  1566. exit code of the DOS command processor (this is always 0!).
  1567.  
  1568. If the command line contains a space character as the first
  1569. character, the screen is not cleared before invocation or refreshed
  1570. afterwards, allowing 'silent' commands, or commands with redirected
  1571. output to be executed without disturbing the display. If the command
  1572. does output to the screen, the display will be disturbed, but can be
  1573. refreshed using the 'y' action. It is preferable to ensure that the
  1574. command will never output to the screen. ~FOption~PFOptions~E O6 can be set so
  1575. that the HyperShell program is saved to disk whilst a command runs
  1576. (this is only possible with the HS.EXE program). Examples:-
  1577.  
  1578.    D        - escape to command line allowing return
  1579.  
  1580.    DDIR/W *.HYP    - Do wide directory listing of hyperfiles
  1581.  
  1582.    d DEL DATA.DAT    - Silently delete a file
  1583.  
  1584. ~X1See also:       ~FExecute program~E
  1585. .
  1586. .FRAME Command chaining
  1587. .TITLE Action 'E'
  1588. ~X1Format:   ECommand line
  1589.  
  1590. The 'E' action executes another program, overwriting HyperShell in
  1591. memory. Only programs (files with .EXE or .COM as an extension)
  1592. can be executed using this action. If subsequent return to
  1593. HyperShell is required, either the 'D' action or the 'X' action
  1594. should be used, although these will mean that the program has less
  1595. room in which to execute, as HyperShell occupies around 120k of
  1596. memory.
  1597.  
  1598.    Edbase                - chains the dbase program
  1599.  
  1600. ~X1See also:       ~FDOS command execution~E, ~FExecute program~E
  1601. .
  1602. .FRAME Expand, or split, variable
  1603. .TITLE Action 'e'
  1604. ~X1Format:   evsabc...
  1605.  
  1606. The 'e' action allows a variable to be split into fields, and
  1607. assigned to a number of other variables. Parameter 'v' is the name
  1608. of the source variable, 's' is a character used to separate the
  1609. fields in the source variable, and abc... are the target variables
  1610. to receive the fields. If the character 's' is ommitted, the
  1611. fields are assumed to be separated by spaces. There is a list
  1612. of ~Freserved characters~E which cannot be used as separators.
  1613.  
  1614.     ex:abcd           - splits 'x' on ':' into a,b,c and d
  1615.  
  1616. If 'x' contained 'one:two:three:four' then 'a' would become 'one',
  1617. 'b' would become 'two' etc.
  1618. ~G
  1619. The opposite effect to the expand action is to pack the values of
  1620. a number of variables in a variable, with a separator between
  1621. them. This can easily be accomplished by the form:-
  1622.  
  1623.    Vv$$as$$bs$$c
  1624.  
  1625. Where the values of v,s,a,b,c are as above. This mechanism can be
  1626. used to pack a set of variables for storage whilst the variable
  1627. names are used for some other purpose. Of course the variable can
  1628. be expanded into a set of variables other than the original.
  1629. .
  1630. .FRAME Frame selection
  1631. .TITLE Action 'F' and 'f'
  1632. ~X1Format:   Fframename{^hyperfile}
  1633.      fframename{^hyperfile}
  1634.  
  1635. The 'F' and 'f' actions select a new frame to display.
  1636.  
  1637. The parameter specifies the frame name of the frame to be
  1638. displayed. If just a frame name is supplied, the frame is assumed
  1639. to be in the local hyperfile. If the hyperfile parameter is used,
  1640. this indicates that the frame belongs to the specified hyperfile.
  1641. The home frame of a hyperfile can be selected with the form:-
  1642.  
  1643.    F^hyperfilename
  1644.  
  1645. The home frame of the current hyperfile is selected with the form
  1646.  
  1647.    F
  1648. ~G
  1649. The lowercase form of the action modifies the backtrack processing
  1650. so that the frame replaces the last frame reference on the
  1651. backtrack list, rather than being added to the list. This is used
  1652. to step through related frames when it is clear that the user is
  1653. reading them through, and where it is not necessary to stack the
  1654. frames on the backtrack list. Also, whilst the uppercase form
  1655. causes a currently executing script to be cleared, the lowercase
  1656. form does not. The example shows an action which will step to the
  1657. next frame in the hyperfile, without retaining the previous frame
  1658. reference.
  1659.  
  1660.    f+
  1661.  
  1662. The '+' modifier is only applicable to the 'F' or 'f' action.
  1663. An extended form of the '+' modifier allows selection of the
  1664. next matching or unmatched frame:-
  1665.  
  1666.   F+1     -  next matching frame
  1667.   F+2     -  next unmatched frame
  1668.  
  1669. If you have chosen to have duplicate frame names in your
  1670. hyperfile, the special form:-
  1671.  
  1672.    F+frame name
  1673.  
  1674. can be used. This looks for the frame from the current frame
  1675. onwards. It can therefore be used in the action string of a
  1676. reference in a frame to look for the next occurrence of the
  1677. frame name after that frame - for when the hyperfile is split
  1678. into sections, or can be used to step through all frames of a
  1679. particular name by using 'Fframe name' for the first and
  1680. 'F+frame name' for the rest.
  1681.  
  1682. The '-' modifier is used to step to the previous frame in the
  1683. hyperfile, and to 'wrap' to the last frame from the first.
  1684.  
  1685.     F-
  1686. .
  1687. .FRAME Graphic screen display
  1688. .TITLE Action 'G' and 'g'
  1689. ~X1Format:   Gfilename
  1690.      g{filename}
  1691.  
  1692. The 'G' and 'g' actions display a graphic or text screen from a
  1693. file in BLOAD format. The 'g' variant does not reset the screen
  1694. mode after display, so that graphic screens can be displayed one
  1695. after the other with no lack of continuity. The 'g' action with
  1696. no parameter resets the display mode to the default text mode,
  1697. which otherwise takes place the next time the frame display is
  1698. refreshed.
  1699.  
  1700. The formats of display supported are listed in the component
  1701. operation guide. BLOAD images, tagged BLOAD images and .PCX
  1702. images of various forms are supported.
  1703. ~G
  1704. The file type is auto-sensed. The correct adaptor type is assumed
  1705. to exist and is not tested, apart from text mode screens, where the
  1706. correct screen address is used for the adaptor type.
  1707.  
  1708. After display the mouse may be used to select a zone on the screen,
  1709. or a character may be pressed to choose an option if no mouse is
  1710. available. The character and zone mappings are defined in a special
  1711. form of MENU, and selected using the ~Fzone selection~E method.
  1712. .
  1713. .FRAME Notepad maintenance
  1714. .TITLE Action 'H' and 'h'
  1715. ~X1Format:   H{string}
  1716.      h{string}
  1717.  
  1718. The notepad, as well as being maintained by the INS and DEL keys,
  1719. may also have data added and removed by the 'H' and 'h' actions.
  1720. The items on the notepad would normally be action specifications,
  1721. although it is possible to store other data on the list for
  1722. selection for other purposes. These actions cause the notepad scan
  1723. pointer (used by !R) to be reset.
  1724.  
  1725. The 'H' action by default requests a comment string which is
  1726. associated with the reference when it is listed. This can be
  1727. suppressed using the ~FO*8 option~PFextended options~E flag.
  1728.  
  1729.      HFframe two       - adds frame reference for 'frame two'
  1730.  
  1731.      hNHelp            - removes all note references for 'Help'
  1732. .
  1733. .FRAME Select next input field
  1734. .TITLE Action 'I'
  1735. ~X1Format:   I
  1736.          Ix
  1737.  
  1738. The 'I' action is specific to frames containing input fields. This
  1739. action is used in an input field action string to select the next
  1740. input field after input is complete on that input field.
  1741.  
  1742. If a parameter is supplied as in the second format above, the
  1743. CURRENT input field is reselected. This is used where an input
  1744. field is validated in a script, and has to be re-entered if in
  1745. error.
  1746.  
  1747. ~X1See also: ~FInput field~E 
  1748. .
  1749. .FRAME Insert text
  1750. .TITLE Action 'i'
  1751. ~X1Format:   istring
  1752.  
  1753. The 'i' action is used to insert text in the current frame display.
  1754. The string can contain formatting flags, but must not contain any
  1755. reference flags. It is usual to start with ~~X and ~~Y flags to
  1756. position the text cursor for writing the string.
  1757.  
  1758. This action can be used to update information on the screen
  1759. without redisplaying the whole frame text.
  1760.  
  1761.     Y&H;i~~Y1~~X60$$5~~L25
  1762.  
  1763. will update the time displayed at line 1 column 60 and re-park
  1764. the text cursor.
  1765.  
  1766. This action should be used with care, as it is easy to corrupt
  1767. the screen display if used incorrectly.
  1768. .
  1769. .FRAME Jump within script
  1770. .TITLE Action 'J' and 'j'
  1771. ~X1Format:   Jlabel
  1772.      jclabel
  1773.  
  1774. The uppercase form 'J' is an unconditional branch, and transfers
  1775. control to the script ~Flabel~PFLabel in script~E denoted by the parameter.
  1776.  
  1777.    Jstart
  1778.  
  1779. Branches to the line containing 'Lstart' in the script. If the
  1780. label does not exist in the script, the jump does not take place,
  1781. and processing continues with the next line in the script.
  1782.  
  1783. The lowercase form 'j' is a conditional jump, and is followed by
  1784. a letter denoting the condition upon which a jump will occur,
  1785. followed by the label to which a branch will be made if the
  1786. condition is set. See ~Fconditions~E.
  1787. .
  1788. .FRAME Set key mapping
  1789. .TITLE Action 'K'
  1790. ~X1Format:   Kksactionstring
  1791.  
  1792. The 'K' action maps a keyboard key to an action string. This
  1793. action is then available from a frame display (not from paged
  1794. displays). When the key is pressed, the action is performed.
  1795.  
  1796. Function keys and printable ascii characters may be mapped
  1797. (subject to them not conflicting with HyperShell metacharacters).
  1798. The key to be mapped is specified by the following notations:-
  1799.  
  1800.    K#xstring       Character x
  1801.    KFnstring       Function key n
  1802.    KSnstring       Shift/function key n
  1803.    KCnstring       Ctrl/function key n
  1804.    KAnstring       Alt/function key n
  1805.  
  1806. Function key 10 is indicated by n = 0.
  1807. ~G
  1808. ~X1Example:
  1809.  
  1810.     K#hNHelp      - map 'h' key to global note 'Help'
  1811.  
  1812.     KF1F^HOME     - Map F1 key to move to HOME hyperfile
  1813.  
  1814. Unshifted function keys equate to the main control menu actions,
  1815. and mapping them changes the actions for the main menu. This can
  1816. be used to disable certain control menu options. The option text
  1817. for the main menu can be set using the special form:-
  1818.  
  1819.     KMnstring      - set menu option text n to string
  1820. ~G
  1821. The K action is also used for mapping strings and actions to
  1822. certain ~Fheadings and control keys~PFControl key mapping~E, using the form
  1823.  
  1824.     KHnmapping     or     KGnmapping
  1825.  
  1826. ~X1Example:
  1827.  
  1828.     KH4Q          - map ESCape to action 'Q' to quit HyperShell
  1829.  
  1830. The complete set of key and heading mappings can be reset at any
  1831. time by the special option action
  1832.  
  1833.     O#
  1834.  
  1835. This is useful for inclusion at the start of the SETUP script in a
  1836. hyperfile, to avoid confusing key mappings being inherited when a
  1837. hyperfile is referenced from another.
  1838.  
  1839. ~X1See also: ~FDo mapped key~E
  1840. .
  1841. .FRAME Do mapped key
  1842. .TITLE Action 'k'
  1843. ~X1Format:   kks
  1844.  
  1845. The 'k' action takes a key specification as for action K and
  1846. performs the action mapped to the key specified.
  1847.  
  1848. This action is used where an action is both mapped to a key and
  1849. tied to a reference or a menu selection.
  1850.  
  1851.      kF1           - do action mapped to Function key 1
  1852.  
  1853.      k#h           - do action mapped to 'h' key
  1854.  
  1855. ~X1See also: ~FSet key mapping~E
  1856. .
  1857. .FRAME Label in script
  1858. .TITLE Action 'L'
  1859. ~X1Format:   Llabelname
  1860.  
  1861. The 'L' action does not do any processing, but indicates a line in
  1862. a script to which jump actions can branch. The 'labelname' is the
  1863. name used as the target of a ~Fjump statement~PFjump within script~E.
  1864.  
  1865.     Lrepeat         - label 'repeat'
  1866.  
  1867. One of the traditional problems with programming is the endless
  1868. loop. To help diagnose this sort of problem, a trace can be
  1869. performed by setting ~Foption flag 7~PFoptions~E. If this is set, the script
  1870. stops at each label it executes, showing the label name.
  1871.  
  1872.     O71 
  1873.  
  1874. If tracing is not enabled, pressing the ESCape key will stop and
  1875. display the label. Any key will resume the script, or pressing ESCape
  1876. again will stop the script.
  1877. .
  1878. .FRAME Load named variable
  1879. .TITLE Action 'l'
  1880. ~X1Format:   lvnamed
  1881.  
  1882. The 'l' action is used to load a named variable with a string
  1883. value. ~FNamed variables~E can be used instead of the single letter
  1884. variables to hold information for expansion in text or in an action.
  1885.  
  1886. Parameter v is a single letter variable and 'named' is the name of
  1887. the named variable. The contents of the variable v are loaded into
  1888. the variable 'named'. Note that the name can be supplied by an
  1889. action modifier or by the expansion of a variable token, including
  1890. that of the same or another named variable.
  1891.  
  1892.     ltTime of day    - loads variable 't' to variable 'Time of day'
  1893.  
  1894. ~X1See also: ~FNamed variables~E, ~FSet variable~E, ~FSet Named Variable~E
  1895. .
  1896. .FRAME Popup menu display
  1897. .TITLE Action 'M' and 'm'
  1898. ~X1Format:    Mmenuname
  1899.       mmenuname
  1900.  
  1901. This action performs the action resulting from selection by the
  1902. user from the named menu. The uppercase form is used for global
  1903. menus and the lowercase form for local menus, where a local menu
  1904. is firstly looked for, with a global menu being looked for if a
  1905. local menu is not found. A menu action, and a menu action modifier,
  1906. may have special parameters added to select from the menu by means
  1907. other than interaction.
  1908.  
  1909.      mtype
  1910.  
  1911. ~X1See also: ~FMenu parameters~E
  1912. .
  1913. .FRAME Popup note display
  1914. .TITLE Action 'N' and 'n'
  1915. ~X1Format:   Nnotename{params}
  1916.      nnotename{params}
  1917.  
  1918. The action 'N' pops up the named note, and waits for a key/button
  1919. press before clearing the note. The uppercase form applies to
  1920. global notes and the lowercase form applies to local notes, where
  1921. a note local to the frame is firstly looked for and a global note
  1922. accessed if the local note cannot be found. Notes can contain
  1923. ~Freferences~E just as frames do, and these will be actioned if
  1924. selected.
  1925.  
  1926.    Nexample note
  1927.  
  1928. ~FParameters~E can be supplied on a note action.
  1929. .
  1930. .FRAME Option setting
  1931. .TITLE Action 'O'
  1932. ~X1Format:    O{*}os
  1933.  
  1934. The action 'O' is used to set HyperShell control options and colour
  1935. schemes. The variants are as follows:-
  1936.  
  1937. Ons       - Set option 'n' to 's'
  1938. O*ns      - Set extended option 'n' to 's'
  1939. OXfb      - Set colour scheme 'X' to foreground 'f' on background 'b'
  1940. O*Xx      - Set application option 'X' to 'x'
  1941.  
  1942. ~FOptions~E and ~Fextended options~E control the operation of
  1943. HyperShell. Parameter n is the option number and s is the setting.
  1944. Some options can have a value of 0 (for OFF) or 1 (for ON). Such
  1945. an option can be 'toggled', that is set off if on and on if off,
  1946. by specifying an alphabetic value. E.g. to toggle warnings:-
  1947.  
  1948.    O8T
  1949. ~G
  1950. ~FColour schemes~E are the highlighting schemes used for various
  1951. purposes in HyperShell. They are set to a two character colour
  1952. setting consisting of the foreground and background ~Fcolours~PFcolour codes~E.
  1953. Note that the brighter 8 colours are used for the background
  1954. scheme if blinking is required.
  1955.  
  1956.    ONyG      - set note references to bright yellow on dark green
  1957.  
  1958. ~FApplication options~E are character settings used to control a
  1959. HyperShell application, and can act as ~Fcondition codes~PFconditions~E
  1960. These are set using the form
  1961.  
  1962.   O*Xx
  1963.  
  1964. Where X is the application option name of 'A' thru 'Z', and 'x'
  1965. is the character value assigned to that option. The option is
  1966. reset using the form 'O*X'.
  1967. .
  1968. .FRAME Printer output
  1969. .TITLE Action 'o'
  1970. ~X1Format:     ostring
  1971.  
  1972. The 'o' action prints the supplied 'string' to a route specified
  1973. by the printer option. The valid values, along with their routes,
  1974. are as follows:-
  1975.  
  1976.    0 - Display on bottom line
  1977.    1 - Print to printer
  1978.    2 - Send to standard output
  1979.    3 - Send to standard 'AUX' (e.g. RS232)
  1980.    4 - Send to 'output file' (that opened by action 'w')
  1981.  
  1982. If an invalid route is specified, output goes to the bottom line.
  1983. The printer is enabled by using '-p' on the command line, or by
  1984. issuing the action 'O51' to set option 5 to 1. Other routes are set
  1985. using 'O5n' where n is one of the above. The 'o' action adds a
  1986. carriage return and a line feed character to each line supplied.
  1987. ~G
  1988.     oLine of text          - output line of text to output route
  1989.  
  1990. To output a control code to the printer, such as a form feed, the
  1991. string function &Cnn can be used:-
  1992.  
  1993.    o&C12
  1994.  
  1995. CAUTION: It is wise to warn the reader to have the printer ready
  1996. .
  1997. .FRAME Popup message
  1998. .TITLE Action 'P'
  1999. ~X1Format:    Pmessage
  2000.  
  2001. The 'P' action pops up a flashing 'message' at the current mouse
  2002. cursor position, and awaits a key or mouse button depression
  2003. before 'popping down'.
  2004.  
  2005.    PHello there!
  2006.  
  2007. If a null string is passed as a parameter, an asterisk will flash
  2008. in the bottom right hand corner of the screen. This can be used as
  2009. a pause to await a key depression from the user before continuing
  2010. with a series of actions.
  2011. .
  2012. .FRAME Display message
  2013. .TITLE Action 'p'
  2014. ~X1Format:    pmessage
  2015.  
  2016. The 'p' action displays a 'message' at the bottom of the screen,
  2017. and continues without waiting for any inputs.
  2018.  
  2019.    pThis is a long message to stay on the screen
  2020.  
  2021. If no parameter is supplied to p, it clears any message currently
  2022. on display.
  2023. .
  2024. .FRAME Quit HyperShell
  2025. .TITLE Action 'Q'
  2026. ~X1Format:    Q{exit status}
  2027.  
  2028. This action is used to exit the HyperShell program. If a parameter
  2029. string is given, its numeric value is used as the exit status for
  2030. the HyperShell program. This means you can use hypershell in batch
  2031. files to control the flow, just as with the 'ask', 'choose' etc.
  2032. type of programs which set the exit status to be tested with the
  2033. 'IF ERRORLEVEL' statement. It is also possible that you may wish
  2034. to return information to a program that has invoked HyperShell
  2035. directly.
  2036.  
  2037.      Q1                    - exit with status 1
  2038. .
  2039. .FRAME Quit script
  2040. .TITLE Action 'q'
  2041. ~X1Format:    q
  2042.  
  2043. This action cancels any current script being executed. It can be
  2044. used to abort a script if an error situation occurs.
  2045. .
  2046. .FRAME Formatted read
  2047. .TITLE Action 'R'
  2048. ~X1Format:    Rsabc..
  2049.  
  2050. The 'R' action allows a line to be read from the input file
  2051. (opened via the 'r' action), split into fields separated by the
  2052. character 's', and assigned to a number of variables (abc etc).
  2053. If the character 's' is ommitted, the fields are assumed to be
  2054. separated by spaces. Separators can be any non-alphanumeric
  2055. character which can be supplied at this point in the action string.
  2056.  
  2057. When the end of the file is reached, no assignments are performed
  2058. and the error status is set.
  2059.  
  2060.     R:gja            - reads the next line from the file
  2061.                        and splits it on ':' characters into
  2062.                        variables g, j and a.
  2063.  
  2064. ~X1See also: ~FOpen/close input file~E
  2065. .
  2066. .FRAME Open/close input file
  2067. .TITLE Action 'r'
  2068. ~X1Format:     r{filename}
  2069.  
  2070. This action is used for opening or closing an input file dedicated
  2071. to applications use. If a parameter is supplied, it contains the
  2072. name of a file to open for input. If no parameter is supplied, the
  2073. input file is closed. The file opened via this action can be read
  2074. by the action modifier '!' or by the action 'R'. Note that on
  2075. opening an input file, any already open input file will be put in
  2076. suspension until the file is closed, at which time the original
  2077. file will again be available for reading. There can only be two
  2078. suspended input files.
  2079.  
  2080.      rDATABASE.DAT            - open DATABASE.DAT for reading
  2081.  
  2082. ~X1See also:- ~FFormatted read~E
  2083. .
  2084. .FRAME Execute script
  2085. .TITLE Action 'S' and 's'
  2086. ~X1Format:    Sscriptname
  2087.  
  2088. The 'S' action executes a named script. If a script is currently
  2089. being executed, it is cleared prior to running the specified
  2090. script. The 's' action looks for a script local to the frame,
  2091. and if not found looks for a global script.
  2092.  
  2093.        SShow price         - run script 'Show price'
  2094.  
  2095. ~FScripts~E can be appended to add ~Fsubroutines~PFcall subroutine~E.
  2096.  
  2097. If a script calls another script, the first script is cancelled.
  2098.  
  2099. ~FParameters~E can be supplied on a script action.
  2100.  
  2101. ~X1See also:- ~Fscripts~E, ~FParameters~E
  2102. .
  2103. .FRAME Display text file
  2104. .TITLE Action 'T'
  2105. ~X1Format:    T{filename}{#page}{/search string}
  2106.  
  2107. The 'T' action presents a paged display of the named text file.
  2108. If no filename is supplied, reentry to a file display that has
  2109. been interrupted is assumed. The paged display highlights any
  2110. references embedded in the text file, unless the ~Fverbatim~PFOptions~E option
  2111. is set. If the ~F8 bit filter~PFOptions~E is set, the top bit is cleared on all
  2112. characters displayed (This is used for certain word processor files).
  2113.  
  2114. If a search string is specified, the string is located and the page
  2115. containing the string is displayed, with the line containing the
  2116. string highlighted. If a page number is specified, the display
  2117. locates at the page number, and is a search string is also specified
  2118. any line containing the search string is highlighted.
  2119.  
  2120.      Tmanual.txt           - display file 'manual.txt'
  2121.      Tcatalog.dat/chair    - display file and search for 'chair'
  2122.      Tcatalog.dat#8        - display file at page 8
  2123.      Tcatalog.dat#8/chair  - display at page 8 and highlight 'chair'
  2124.  
  2125. A number of function and control keys are supported:-
  2126.  
  2127.    F1 or ?         Help
  2128.    F2 or #         Request page number and go to page
  2129.    F3 or Pg Up     Go to previous page
  2130.    F4 or Home      Go to start of file
  2131.    F5              Search for next occurrence
  2132.    F6 or /         Request search string and perform search
  2133.    F7              Redisplay current page
  2134.    F8 or End       Go to end of file
  2135.    F9 or RETURN    Suspend typing, allowing subsequent return
  2136.    F10             Close file and exit typing
  2137.  
  2138.    Ctrl-Right      Scroll Right to view text off screen
  2139.    Ctrl-Left       Scroll screen to left
  2140.  
  2141.    ESCAPE          Exit typing and cancel script
  2142.    Pg Dn or other
  2143.     unmapped key   Go to next page
  2144. ~G
  2145. The RETURN key, if over a highlighted reference, selects the
  2146. reference, otherwise it returns to the current frame display,
  2147. and permits subsequent return to viewing of the file by use of
  2148. the 'T' action with no parameter. A further T action, supplying
  2149. a parameter, will close the file on display and start a new one.
  2150.  
  2151. References selected from the text will be acted on. Certain
  2152. references will have a 'T' action appended so that viewing of
  2153. the file will resume after the action has been performed.
  2154.  
  2155. The F6 or '/' key will prompt for a search string, and search
  2156. forward  through the file for that string, stopping at the page
  2157. containing the string and highlighting any lines containing the
  2158. string. A ~Fpattern match~E search can be specified by starting the
  2159. search string with the '^' character. Further occurrences of the
  2160. string can be located by pressing F5.
  2161.  
  2162. The F2 or '#' key will prompt for a page number, and will then
  2163. locate and display the page.
  2164. .
  2165. .FRAME File popup note
  2166. .TITLE Action 't'
  2167. ~X1Format:    tfilename
  2168.  
  2169. The 't' action displays the contents of a file as a popup note, the
  2170. filename having an explicit extension or a default implicit extension
  2171. of '.NTE'. The file notes can contain the same as normal ~Fnotes~E,
  2172. and can contain references which can be selected. The file note is
  2173. used for a number of purposes, and usually indicates that the note
  2174. is less permanent than one included in the hyperfile. It could, for
  2175. instance, be a scratchpad note created by the HyperShell user.
  2176.  
  2177. If a text line in a note file starts with the '.' character, that
  2178. line and the remaining lines are not displayed.
  2179.  
  2180.      tprices             - pops up note file PRICES.NTE
  2181.  
  2182. ~FParameters~E can be supplied on a file note action.
  2183. .
  2184. .FRAME Set variable
  2185. .TITLE Action 'V'
  2186. ~X1Format:    Vxstring
  2187.  
  2188. The 'V' action allows a variable 'x' to be set to a 'string'. There
  2189. are 52 applications variables named 'a' to 'z' and 'A' to 'Z'.
  2190. There are a few system variables that may be set using this command
  2191. also, although the numeric ones cannot be changed. ~FVariables~E can
  2192. hold any string value, and can also hold numeric data as a numeric
  2193. string. Variables can be expanded into the frame text display, a
  2194. note display, or into an action string, by specifying the variable
  2195. substitution token '$$x' where x is the variable name.
  2196.  
  2197.      VnJohn Smith     - set variable 'n' to 'John Smith'
  2198.  
  2199. The 'named' variables described under the 'l' action may not be set
  2200. using this action.
  2201.  
  2202. ~X1See also: ~FTest variable~E
  2203. .
  2204. .FRAME Test variable
  2205. .TITLE Action 'v'
  2206. ~X1Format:    vxstring
  2207.  
  2208. The 'v' action compares the variable 'x' against the 'string',
  2209. setting condition codes to reflect the result of the comparison.
  2210. A lexical comparison is performed, unless the comparand string
  2211. starts with a numeric digit or a minus sign, in which case an
  2212. integer numeric comparison is made. A substring search of both
  2213. operands within each other. The resulting ~Fcondition codes~PFconditions~E can be
  2214. used in the 'j', 'a' and 'z' actions, and other places.
  2215.  
  2216.       vnSmith;jcSMITHS  - jumps to SMITHS if 'n' contains 'Smith'
  2217.  
  2218. Pattern matching is performed during a variable comparison if
  2219. variable '~~' is set. If the supplied pattern starts with a '^'
  2220. character, the variable is compared against the supplied pattern
  2221. using a ~FPattern Match~E process, otherwise a case sensitive
  2222. comparison is performed. If the comparison succeeds, condition code
  2223. 'm' is set, else condition code 'f' is set. If variable '~~' is NOT
  2224. set, the condition code  'f'  will  be set in ALL CASES (even when
  2225. condition code 'e' is set).
  2226.  
  2227.  
  2228. To test a named variable, it first has to be loaded into a single
  2229. letter variable using the form:-
  2230.  
  2231.      Vx$$(named)
  2232.  
  2233. This may then be used in the test:-
  2234.  
  2235.      vxtest value
  2236.  
  2237. ~X1See also: ~FSet variable~E
  2238. .
  2239. .FRAME Write record to file
  2240. .TITLE Action 'W'
  2241. ~X1Format:     Wstring
  2242.  
  2243. The 'W' action writes the parameter string to the output file
  2244. opened via the 'w' action.
  2245.  
  2246.      WRhododendron      - writes 'Rhododendron' to file
  2247.  
  2248.  A line can be formatted to contain the
  2249. values of variables by simply specifying the variable expansion
  2250. tokens at the required place in the line. Thus to write a line with
  2251. variables a,b,c in it separated by colons, we specify:-
  2252.  
  2253.    W$$a:$$b:$$c
  2254. .
  2255. .FRAME Open/close output file
  2256. .TITLE Action 'w'
  2257. ~X1Format:    w{filename}
  2258.       w{filename+}
  2259.  
  2260. This action is used for opening or closing an output file for
  2261. hyperfile applications to use. If a parameter is supplied, it
  2262. contains the name of a file to open for output. If no parameter is
  2263. supplied, the output file is closed. If a suffix of '+' is added,
  2264. an existing file is opened for extension. The file opened via this
  2265. action can be written to using the 'W' action. If the file cannot
  2266. be opened, an error status is set.
  2267.  
  2268.      wprices.dat    - opens file PRICES.DAT for writing
  2269.  
  2270. On opening an output file, any already open output file will be
  2271. put in suspension until the file is closed, at which time the
  2272. original file will again be available for writing. There can only
  2273. be two suspended output files.
  2274. .
  2275. .FRAME Execute program
  2276. .TITLE Action 'X' and 'x'
  2277. ~X1Format:    Xcommand line
  2278.       xcommand line
  2279.  
  2280. The 'X' action executes the program and parameters supplied in the
  2281. parameter string, and returns to HyperShell when the program
  2282. terminates. The uppercase form waits for a key press before
  2283. redisplaying the current frame, the lowercase form returns
  2284. immediately to the display. The system variable '^' is set to the
  2285. numeric exit code of the program.
  2286.  
  2287.      Xpayroll week 1   - runs program 'payroll' with parameters
  2288.  
  2289. Care should be exercised when specifying the program invocation,
  2290. as certain errors will 'crash' the computer and require a reboot.
  2291. If in doubt, use the 'D' action, which is safer. The X actions are
  2292. more efficient in speed and memory utilisation, however, and the
  2293. exit code of the executed program is always available.
  2294. .
  2295. .FRAME Clear status
  2296. .TITLE Action 'Y'
  2297. ~X1Format:    Y
  2298.  
  2299. The 'Y' action does nothing, apart from reset the error status to
  2300. 0. It is also used to 'throw away' the results of an action
  2301. modifier.
  2302.  
  2303. If the special system variable (`) is used, the Y action
  2304. should be used to reset the error status so that the error
  2305. action mapped to the variable is performed on an error.
  2306. .
  2307. .FRAME Refresh frame display
  2308. .TITLE Action 'y'
  2309. ~X1Format:    y{c}
  2310.  
  2311. The 'y' action refreshes the current frame display. If a
  2312. parameter 'c' is supplied, and the frame occupies more than
  2313. one screenful, the action has the following effects:-
  2314.  
  2315.       y              - display first page of frame
  2316.       y#             - redisplay current page of frame
  2317.       y-             - display previous page of frame
  2318.       y+             - (or any other character than '-' or '#')
  2319.                        display next page of frame or first
  2320.                        page if at end
  2321. .
  2322. .FRAME Unless condition
  2323. .TITLE Action 'z'
  2324. ~X1Format:     zcaction
  2325.  
  2326. The 'z' action works in the same way as the ~Fconditional action~E
  2327. does, but the action is only performed if the condition is FALSE.
  2328.  
  2329.      vn23;zlJGREQ - jumps to GREQ if 'n' not less than 23
  2330. .
  2331. .FRAME Extended action codes
  2332. .TITLE Action codes 'Z'
  2333. The 'Z' code introduces an 'extended' action code. This is one
  2334. where a second character denotes the action to be performed.
  2335.  
  2336. As action modifier codes are required in the second or third
  2337. character position, only the third character position is
  2338. available with these action codes. This does have advantages
  2339. in some cases.
  2340. .
  2341. .FRAME Specified autoreference
  2342. .TITLE Action code 'ZA'
  2343. ~X1Format:    ZArreference:action
  2344.       ZArreference
  2345.  
  2346. The 'ZA' action sets up an autoreference specification. The 'r'
  2347. parameter is the reference type, and can be one of the reference
  2348. flags A,F,f,M,m,N,n,S,s,t. action is the action string to be
  2349. mapped to the reference. If the action part is ommitted, as in
  2350. the second format above, the action string defaults to just
  2351. 'rreference'. When the autoreference is applied, instances of
  2352. string 'reference' are replaced by the string:-
  2353.  
  2354.     ~~rreference~~Paction~~E    - for first format
  2355.  
  2356.     ~~rreference~~E        - for second format
  2357.  
  2358. To perform autoreferencing, the options 4 and *4 should be set
  2359. appropriately (4 should be 2 or 3, *4 should be 0 or 1).
  2360.  
  2361. This form of autoreferencing can be used for glossary references
  2362. to global notes, or for ~Falternative hypertext~E referencing.
  2363.  
  2364. Examples:
  2365.  
  2366.      ZANTSR        - sets autoreference for note 'TSR'
  2367.  
  2368. This sets note reference flags on all occurences of the string
  2369. 'TSR' in the text.
  2370.  
  2371.      ZAAQuit:Q     - sets up an action autoreference
  2372.  
  2373. This maps the 'Q' action to all occurrences of the word 'Quit'
  2374. in the text.
  2375. .
  2376. .FRAME Sound Bell
  2377. .TITLE Action code 'ZB'
  2378. ~X1Format:    ZB
  2379.  
  2380. The 'ZB' code causes the audible warning device to be deployed.
  2381. This usually emits a 'beep' sound.
  2382.  
  2383. ~p    ~APress this if you haven't heard one before~PZB~E
  2384. .
  2385. .FRAME Blink enable
  2386. .TITLE Action code 'Zb'
  2387. ~X1Format:    Zb1
  2388.       Zb0
  2389.  
  2390. The 'Zb' action changes the way the text screen handles the 'blink'
  2391. attribute. The settings are as follows:-
  2392.  
  2393.   Zb1       - Blink characters with high bit set (lowercase colours)
  2394.   Zb0       - High intensity background for characters with high bit
  2395.  
  2396. This action may be used on various display adaptors to change the
  2397. appearance of the text, and allow high intensity background colours
  2398. to be set.
  2399.  
  2400. ~X1CAUTION:     THE ADAPTOR IS LEFT IN THE CURRENT STATE ON PROGRAM EXIT
  2401. .
  2402. .FRAME Do control menu
  2403. .TITLE Action code 'ZC'
  2404. ~X1Format:    ZC
  2405.  
  2406. The 'ZC' code causes the HyperShell control menu to be presented
  2407. for selection. It is by default mapped to the ESC key.
  2408. .
  2409. .FRAME Exit subroutine
  2410. .TITLE Action code 'ZE'
  2411. ~X1Format:     ZE
  2412.  
  2413.     The 'ZE' action returns from a subroutine called in a ~Fscript~PFscripts~E
  2414.     by the ~FCall subroutine~E action.
  2415.  
  2416.     If no subroutine is in effect, no return is made.
  2417.  
  2418. .
  2419. .FRAME Set footer depth
  2420. .TITLE Action code 'ZF'
  2421. ~X1Format:    ZFnn
  2422.  
  2423. The 'ZF' action sets the depth reserved for the ~Ffooter~E section
  2424. for when conditional lines are included in the footer. The depth
  2425. should accommodate the footer text with the most lines.
  2426.  
  2427. This action is used in the SETUP script, if required. It is not
  2428. necessary where the footer is of fixed content, as it will be
  2429. determined automatically when the header is loaded.
  2430.  
  2431.       ZF4         - set footer depth to 4
  2432. .
  2433. .FRAME Get mouse coordinates
  2434. .TITLE Action code 'ZG'
  2435.  
  2436. The 'ZG' action causes the mouse coordinates to be read into the
  2437. variables used by the ~Fzone selection~E operation normally after
  2438. a graphics display.
  2439.  
  2440. These variables can be accessed using the functions &X and &Y,
  2441. or a zone selection could be performed based on the new values.
  2442. .
  2443. .FRAME Special graphic selection
  2444. .TITLE Action code 'Zg'
  2445. ~X1Format:    Zg
  2446.       Zgx
  2447.  
  2448. The 'Zg' action will cause the mouse to be used for selection from
  2449. the screen currently on display. If a parameter is supplied as in
  2450. the second format, the screen is assumed to have a high vertical
  2451. resolution (greater than 200) when calculating the mouse
  2452. coordinates.
  2453.  
  2454. This is used where some external program is used to display the
  2455. graphic screen, or possibly when a further selection is needed
  2456. from a screen displayed using the 'g' ~Fgraphic screen display~E.
  2457.  
  2458. .
  2459. .FRAME Hold line for return
  2460. .TITLE Action code 'ZH'
  2461. ~X1Format:   ZH
  2462.  
  2463. The 'ZH' action causes the current line number to be held in
  2464. the subroutine call stack, permitting a return to be made to
  2465. the current line using the ~FExit subroutine~E action. This is
  2466. used as an alternative method for loop constructs:-
  2467.  
  2468.    -- open file
  2469.    rfilename.ext
  2470.    -- read file
  2471.    ZH;Y;R,abc
  2472.    jsEOF
  2473.    P$a $b $c
  2474.    -- loop back to read
  2475.    ZE
  2476.    LEOF
  2477.    r
  2478.    q
  2479. .
  2480. .FRAME Quick conditional
  2481. .TITLE Action code 'ZI'
  2482. ~X1Format:    ZIexpr;action . . .
  2483.  
  2484. The 'ZI' action, pronounced 'if', allows a single line conditional
  2485. statement to be coded. The 'expr' represents a numeric expression
  2486. as used in the ~FExpression Evaluation~E action modifier, but
  2487. without the introductory '=' sign. If the expression evaluates to
  2488. TRUE (having a value other than 0), then the remaining actions of
  2489. the multiple action are performed, otherwise they are ignored.
  2490. Condition codes are not affected by this action, unless the
  2491. combined string compare and condition truth test (quotes) is used.
  2492.  
  2493. With the extended ~Fexpression evaluation~E capabilities, this makes
  2494. multiple conditions easy to specify. For example to test if variable
  2495. 'x' is in the range 10 to 15 inclusive, and print a message if not,
  2496. the following multiple action is coded.
  2497.  
  2498.    ZI(x < 10) ! (x > 15);pValue outside permitted range
  2499.  
  2500. .
  2501. .FRAME Call subroutine
  2502. .TITLE Action code 'ZJ'
  2503. ~X1Format:     ZJlabel
  2504.  
  2505. The 'ZJ' action acts like the ~FJump within script~E action, only the
  2506. current position in the script is retained so that it can be
  2507. returned to using the ~FExit subroutine~E action. If the label does
  2508. not exist, no branch is made, but the position is marked so that a
  2509. return can be made.
  2510.  
  2511. Subroutines can nest up to 10 deep.
  2512.  
  2513.  . . .
  2514.  ZJDouble        - branches to subroutine 'Double'
  2515.  . . .           - return to here when subroutine exits
  2516.  
  2517.  LDouble         - start of subroutine 'Double'
  2518.  . . .
  2519.  ZE              - exit from subroutine
  2520. .
  2521. .FRAME Local flag toggle
  2522. .TITLE Action code 'ZL'
  2523. ~X1Format:    ZLn{s}
  2524.  
  2525. The 'ZL' action toggles the frame local flag 'n', and causes the
  2526. display to be refreshed, unless the refresh suppression character
  2527. 's' is specified. The flag 'n' has a value of '0' to '9' or one
  2528. of the special local flags '/' or ':'.
  2529.  
  2530. This is used for ~Ainline text expansion~PZL3~E using a reference
  2531. of the form:-
  2532.  
  2533.    ~~Ainline text expansion~~PZL3~~E
  2534.  
  2535. ~h3     Inline text expansion is used to provide additional information
  2536. ~h3     hidden within the text until a reference is selected. This is
  2537. ~h3     useful where an expert would not want to read mundane details
  2538. ~h3     which a novice would require. The local flag is usually used
  2539. ~h3     for this, although a ~Fglobal flag~PFglobal options~E can be used where an overall
  2540. ~h3     expansion of text for a novice is required.
  2541. .
  2542. .FRAME Local flag indicator
  2543. .TITLE Action code 'Zl'
  2544. ~X1Format:   Zlc{i}
  2545.  
  2546. The 'Zl' action is used to select which of the ~Flocal flags~E will
  2547. cause an indicator to be displayed in the ~Fcontents list~E.
  2548.  
  2549. The 'c' parameter is the local flag code to be used. The optional
  2550. 'i' parameter is a single character indicator which is displayed
  2551. next to the key map box in the contents list.
  2552.  
  2553. ~X1Example:
  2554.  
  2555. Zl:
  2556.  
  2557. This causes the default indicator '√' to be shown in the contents
  2558. for frames which have been visited.
  2559. .
  2560. .FRAME Set 43 or 50 line mode
  2561. .TITLE Action code 'ZM'
  2562. ~X1Format:    ZLM{nn}
  2563.  
  2564. The 'ZM' action sets the video mode for the adaptor.
  2565.  
  2566.    ZM3         80 column by 25 line mode (default)
  2567.    ZM64        80 column by 43 or 50 line mode
  2568.  
  2569. This should only be used with EGA and VGA adaptors. In the 43/50
  2570. line mode, depending on the mouse driver and adaptor, different
  2571. degrees of control are available over the mouse cursor. You may
  2572. find that it is not possible to properly use the extra lines.
  2573. Using the -m flag on the command line may allow you to move the
  2574. cursor below line 25 using keyboard control.
  2575.  
  2576. All paged lists and the typed file display make use of the extra
  2577. lines.  Frame text also makes use of it, provided the footer has
  2578. not truncated it at an earlier line. The number of lines is
  2579. returned by function call &R25.
  2580. .FRAME Preload hyperfile
  2581. .TITLE Action code 'ZP'
  2582. ~X1Format:    ZPhyperfile
  2583.  
  2584. The 'ZP' action causes a hyperfile to be loaded without any frame
  2585. being displayed from it. This is useful to load a set of hyperfiles
  2586. during the SETUP script, to permit searches to be made across them.
  2587.  
  2588.      ZPextra             - preloads EXTRA.HYP
  2589. .
  2590. .FRAME Recall saved screen
  2591. .TITLE Action code 'ZR'
  2592. ~X1Format:    ZR
  2593.  
  2594. The 'ZR' action displays the screen that was saved at startup, if
  2595. the '-s' flag was specified on the command line. If this flag was
  2596. not specified, nothing happens.
  2597.  
  2598. The frame is redisplayed when any key is pressed.
  2599. .
  2600. .FRAME Reset to full screen
  2601. .TITLE Action code 'Zr'
  2602. ~X1Format:    Zr
  2603.  
  2604. The 'Zr' action is used to reinstate the full screen mapping
  2605. after a window has been defined within the screen using the
  2606. ~Fbox draw~E reference flag, usually through a 'i' action.
  2607. .
  2608. .FRAME Set environment variable
  2609. .TITLE Action code 'ZS'
  2610. ~X1Format:    ZSenvironment string assignment
  2611.  
  2612. The 'ZS' action causes an environment variable to be set, which can
  2613. be used elsewhere in HyperShell using the ~Fenvironment variable~E
  2614. modifier, or passed to a program invoked from HyperShell, such as
  2615. dBASE III, which can access the variable to obtain parametric
  2616. information.
  2617.  
  2618.      ZSNAME=FRED JONES   - equivalent to SET NAME=FRED JONES
  2619.                            on the DOS command line.
  2620. .
  2621. .FRAME Take copy of screen
  2622. .TITLE Action code 'ZT'
  2623. ~X1Format:   ZT
  2624.  
  2625. The 'ZT' action takes a copy of the current screen display.
  2626.  
  2627. The whole screen is saved to the screen save area
  2628. (and overwrites that set up by the -s flag, if one was specified).
  2629.  
  2630. The saved screen is displayed using the ~FShow saved screen~E action.
  2631.  
  2632. This may be used before a ~Fsubwindow~PFBox draw~E is drawn, to allow the
  2633. subwindow to be 'popped down' after use.
  2634.  
  2635. ~X1CAUTION: These actions can be used for other purposes, but care must
  2636. be taken not to confuse the user with false reference mappings.
  2637. .
  2638. .FRAME Show saved screen
  2639. .TITLE Action code 'Zt'
  2640. ~X1Format:   Zt
  2641.  
  2642. The 'Zt' action shows the screen display saved by a previous
  2643. ~FTake copy of screen~E action. If no saved screen is available,
  2644. nothing happens.
  2645.  
  2646. The whole screen is overlaid by the saved screen save area
  2647. (or the one that set up by the -s flag, if one was specified).
  2648.  
  2649. A number of subwindows can be drawn, and cleared again afterwards
  2650. using the Show saved screen action.
  2651.  
  2652. ~X1CAUTION: These actions can be used for other purposes, but care must
  2653. be taken not to confuse the user with false reference mappings.
  2654. .
  2655. .FRAME Unget key code
  2656. .TITLE Action code 'ZU'
  2657. ~X1Format:    ZUc
  2658.  
  2659. The 'ZU' action is used to place a character in the key input
  2660. so that the action mapped to that character will be performed
  2661. as though the key had been pressed. This can be used for frame
  2662. display inputs, note display inputs, popup request inputs and
  2663. graphic display inputs. It cannot be used for timeout inputs
  2664. or text string inputs. It is usually used with a timeout input
  2665. supplying the character:-
  2666.  
  2667.      ZU&G300;ab{timeout action}
  2668. .
  2669. .FRAME Set Named Variable
  2670. .TITLE Action code 'ZV'
  2671. ~X1Format:   ZVnamed=value
  2672.  
  2673. The 'ZV' action is used to set a named variable to a string
  2674. value. ~FNamed variables~E can be used instead of the single letter
  2675. variables to hold information for expansion in text or in an action.
  2676.  
  2677. 'named' is the name of the named variable. Note that the name can be
  2678. supplied in part or in full by the expansion of a variable token,
  2679. allowing a form of 'subscripting' for arrays of values.
  2680.  
  2681. ~X1Example:
  2682.  
  2683.     ZVdate=$$4               - set variable 'date' to current date
  2684.  
  2685. ~X1See also: ~FNamed variables~E, ~FSet variable~E, ~FLoad named variable~E
  2686. .
  2687. .FRAME Set mouse column
  2688. .TITLE Action code 'ZX'
  2689. ~X1Format:    ZXnn
  2690.  
  2691. The 'ZX' action sets the 'x' position of the mouse cursor, namely
  2692. the column number, from 1 to 80. The 'y' position, or line number,
  2693. stays the same.
  2694.  
  2695.       ZX3              - set mouse cursor at column 3
  2696. .
  2697. .FRAME Set mouse line
  2698. .TITLE Action code 'ZY'
  2699. ~X1Format:    ZYnn
  2700.  
  2701. The 'ZY' action sets the 'y' position of the mouse cursor, namely
  2702. the line number, from 1 to 25. The 'x' position, or column number,
  2703. stays the same.
  2704.  
  2705.      ZY15              - set mouse cursor at line 15
  2706. .
  2707. .FRAME Parameters
  2708. .TITLE passing data into scripts and notes
  2709. The actions t,N,n,c,S,s and the @t,@N,@n modifiers can have a
  2710. parameter string added in parentheses afterwards as follows:-
  2711.  
  2712.    Sscript(parameters)
  2713.  
  2714. The string in parentheses is assigned to variable $$\, and can be
  2715. used as such in the note or script. In a script, it can be split
  2716. up on a separator using action 'e'. If the script is called with:-
  2717.  
  2718.    Shelp(contents,12,file.txt)
  2719.  
  2720. Then this may be split into variables in a script using the action
  2721.  
  2722.    e\,abc...
  2723.  
  2724. where a,b,c etc. are the variables to split the string into.
  2725. For the above, this would set a = contents, b = 12, c = file.txt
  2726.  
  2727. The variables can then be used within the script as parameters.
  2728. .
  2729. .FRAME Pattern Match
  2730. .TITLE Extended string comparison and searching
  2731. The Pattern Match operation, used for comparisons and searching,
  2732. compares a string against a pattern. The pattern contains literal
  2733. characters and various pattern specifying 'metacharacters'.
  2734.  
  2735. These metacharacters are as follows:-
  2736.  
  2737.  <             at start - match start of string
  2738.  >             at end - match end of string
  2739.  ?             match any character
  2740.  _             match one or more space or TAB characters
  2741.  (alt1/alt2)   match alt1 or alt2 (if only one, it is optional)
  2742.  [abc]         match 'a', 'b' or 'c'
  2743.  [^abc]        match any character but 'a','b' or 'c'
  2744.  [x-y]         match any character in range x to y
  2745.                e.g. [a-zA-Z] would match any letter
  2746.  {             start of word
  2747.  }             end of word
  2748.  x#            zero or more of the character or subexpression x
  2749.  x+            one or more of the character or subexpression x
  2750.  
  2751.  *             any string (equivalent to ?#)
  2752.  
  2753.  \x            character 'x' (allows metacharacters to be used
  2754.                literally)
  2755.  
  2756. Examples:-
  2757.  
  2758.    [a-zA-Z]#          an alphabetic substring
  2759.    [0-9]#             a numeric substring
  2760.    (perhaps)          optional substring 'perhaps'
  2761.    (cat/dog)(s)       'cat' or 'cats' or 'dog' or 'dogs'
  2762.    ((pine)apple/grape(fruit))
  2763.                       'apple','pineapple','grape', or 'grapefruit'
  2764.  
  2765.     <.FRAME           a string starting '.FRAME'
  2766. .
  2767. .FRAME Menu parameters
  2768. .TITLE Special forms of menu selection
  2769. A number of different selection methods can be used to
  2770. select items from menus, other by presenting the menu to the
  2771. user for selection.
  2772.  
  2773. ~X1[1]  ~FArray selection~K1~E - to use a menu as an array
  2774.  
  2775. ~X1[2]  ~FLookup selection~K2~E - to use a menu as a lookup table
  2776.  
  2777. ~X1[3]  ~FZone selection~K3~E - to use a menu for graphic zone actions
  2778. .
  2779. .FRAME Array selection
  2780. .TITLE Using a menu as an array
  2781. Special forms of menu action specification are used to permit
  2782. selection of a menu option from global, local and file menus,
  2783. specified as actions or dynamic menus. The following form
  2784. is used to select a menu choice by index:-
  2785.  
  2786.    Mmenuname(nn)
  2787.  
  2788. Where nn is a number representing the option number in the menu to
  2789. select. If the number is outside the range of the menu, no action
  2790. is performed (or is returned for an action modifier), and the error
  2791. status is set.
  2792.  
  2793.    P@Merror message(4)    - Pops up line 4 of menu 'error message'
  2794. .
  2795. .FRAME Lookup selection
  2796. .TITLE Menus as lookup tables
  2797. A menu can also be used as a lookup table. The menu is then
  2798. accessed by a specification of the form:-
  2799.  
  2800.    Mmenuname[key]
  2801.  
  2802. In this case, the lines in the menu section have to be set up in
  2803. the following form:-
  2804.  
  2805.    key|action
  2806.  
  2807. Where key is the key to look up, and action is the action to perform
  2808. if a match is found. The '|' character has to immediately follow the
  2809. key string for this to work. If the key is not found in the menu, no
  2810. action is performed and the error status is set. If the key is found,
  2811. the action part is returned as the menu result. The last line of a
  2812. lookup table menu can be of the form:-
  2813.  
  2814.     *|default action
  2815.  
  2816. This action is performed if the key is not found in the other options.
  2817. .
  2818. .FRAME Zone selection
  2819. .TITLE Mapping an action to a selection zone
  2820. The form Mmenuname[@] is used for zone selection menus used with
  2821. graphic displays. The menu options in this case are set up using
  2822. the graphics preparation facilties described in the operation
  2823. guide. They can also be set up manually, and have the following
  2824. form:-
  2825.  
  2826. kXYxy|returnval
  2827.  
  2828. where k is the key mapping and XY and xy are the top left and
  2829. bottom right corners of the selection zone. Returnval is the
  2830. value returned by menu, as usual. XxYy are single characters
  2831. equal to ASCII 32 + the column/row number (similar to those
  2832. used in ANSI escape sequences on terminals). If a RETURN key
  2833. or left mouse button is pressed, the zone coordinates are
  2834. searched. If any other key is pressed, the key mappings are
  2835. searched.
  2836.  
  2837. A default entry can be placed at the end of the menu using an
  2838. option of the form:-~G
  2839.  
  2840. *....|default action
  2841.  
  2842. Because the menu is searched in sequence from to to bottom,
  2843. selection zones can overlap, as the selection priority is
  2844. determined by the sequence. The zone 'on top' or 'in front'
  2845. should come before the one behind. The graphics preparation
  2846. facilities build the list from the start, so highest priority
  2847. zones should be specified first. Of course, the list can be
  2848. edited afterwards if the zones are in the wrong order.
  2849. .
  2850. .PRINT SECTION 5.
  2851. .
  2852. .PRINT TITLE
  2853. Reference Guide - Action modifiers
  2854. .
  2855. .PRINT PAGE
  2856. .
  2857. .FRAME Action Modifier functions
  2858. .TITLE Section - Functions to modify actions
  2859. The action may have its parameter string supplied indirectly via an
  2860. action modifier, or the first character supplied directly and the
  2861. rest supplied indirectly. The action modifier argument string may
  2862. contain variable tokens, which are expanded prior to evaluation.
  2863. The result of the action modifier can optionally be further
  2864. formatted via ~Fpattern strings~E. The resulting parameter string then
  2865. has any ~Fvariable token specifiers~PFexpansion of variables~E expanded prior to being applied
  2866. to the action. Action modifiers are as follows:-
  2867.  
  2868. ~X1[1]    ~FPrompt Function~K1~E            Ask for string
  2869. ~X1[2]    ~FRead and Lookup functions~K2~E    From file
  2870. ~X1[3]    ~FEnvironment variable~K3~E        As SET by DOS
  2871. ~X1[4]    ~FExpression evaluation~K4~E        Arithmetic
  2872. ~X1[5]    ~FString functions~K5~E        Miscellaneous
  2873. ~X1[6]    ~FDynamic menu functions~K6~E        Menus and selections
  2874. .
  2875. .FRAME Prompt function
  2876. .TITLE Modifier code ?
  2877. ~X1Format:    ?prompt string
  2878.       ?prompt string/default
  2879.  
  2880. The prompt modifier allows a string to be requested from the user.
  2881. 'prompt string' is a string which is used as a prompt to the user.
  2882. The input response will form the resulting parameter. If the first
  2883. character of the prompt is a ':', the input response is not echoed
  2884. to the user, allowing passwords and other confidential material to
  2885. be input.
  2886.  
  2887.      Vn?Enter your name    - loads input string to variable 'n'
  2888.  
  2889. A  string  can be provided for editing by appending a string to the
  2890. prompt modifier. When this is done, the cursor is placed at the
  2891. end of the string ready for editing. This can be used to provide
  2892. defaults or to modify the previous value of a variable:-
  2893.  
  2894.       Vc?Delete disk/Y
  2895.  
  2896.       Vj?Enter name/$$j
  2897. .
  2898. .FRAME Read and Lookup functions
  2899. .TITLE Modifier codes !, !F, !L
  2900. ~X1Format:     !{F|L|B}{key}
  2901.  
  2902. These functions perform read and search operations on the input
  2903. file (opened by an 'r' action). The modifier for a file read is
  2904.  
  2905.    !F{key}
  2906.  
  2907. Where {key} is an optional key string, which is compared against
  2908. the start of each record read until a match is found. The
  2909. comparison is case insensitive. If '!' or '!F' appears on its own,
  2910. it returns the next line read from the input file. Any search
  2911. starts immediately after the last record read. The modifier
  2912.  
  2913.    !L{key}
  2914.  
  2915. Causes the file to be rewound prior to the search taking place.
  2916. The EOF status is set if the end of file is reached.
  2917. ~G
  2918.    !Bkey
  2919.  
  2920. Provides a very fast search of a text file sorted in ascending
  2921. order. The file can be sorted using the DOS SORT command.
  2922.  
  2923. The fast search CANNOT be used on compressed files.
  2924. .
  2925. .FRAME Directory functions
  2926. .TITLE Directory functions
  2927. ~X1Format:     !Dwildcard
  2928.        !D
  2929.  
  2930. These functions allow the file names of files selected using the
  2931. wildcard pattern to be accessed. The wildcard specification is
  2932. used first to select the first file matching the wildcard. The
  2933. specification without the wildcard is then used to step through
  2934. the matching filenames. The EOF status is set when there are no
  2935. more files matching the specification.
  2936.  
  2937. The directory functions do not affect the currently open files,
  2938. and it is possible to open, read and close each file in turn.
  2939.  
  2940. ~X1Example:
  2941.  
  2942.     !D*.HYP            - get first hyperfile name
  2943.     !D            - get next filename
  2944. .
  2945. .FRAME Noted references
  2946. .TITLE Modifier code !R and !C
  2947. ~X1Format:    !{R|C}{key}
  2948.  
  2949. The noted references, set up using the INS key or the 'H'
  2950. action, can be obtained using the modifier:-
  2951.  
  2952.    !R{key}
  2953.  
  2954. The {key}, if present, causes the references to be scanned for the
  2955. next one starting with the key string. For example:-
  2956.  
  2957.    !RF
  2958.  
  2959. returns the next frame reference.
  2960.  
  2961. Any search or step is taken from after the last reference obtained.
  2962. The scan pointer is reset whenever a reference is added or removed
  2963. from the list, and can be rewound with a dummy 'remove' action:-
  2964.  
  2965.    h
  2966.  
  2967. The EOF status is set when the end of the references is reached.
  2968.  
  2969. The comment associated with the last reference obtained by the
  2970. !R modifier can be obtained using the modifier:-
  2971.  
  2972.     !C
  2973. .
  2974. .FRAME Environment Variable
  2975. .TITLE Modifier code %
  2976. ~X1Format:    %variablename
  2977.  
  2978. An environment variable modifier returns the value of a DOS
  2979. environment variable. This variable is set using the SET command
  2980. under DOS, or using the ~FSet environment variable~E action in
  2981. HyperShell.
  2982.  
  2983.      Vf%FORMAT    - load value of 'FORMAT' into variable 'f'
  2984.  
  2985. The e.v. was set using a DOS command of the form:-
  2986.  
  2987.      SET FORMAT=DDMMYY
  2988. .
  2989. .FRAME Expression evaluation
  2990. .TITLE Modifier code =
  2991. ~X1Format:     =expression
  2992.  
  2993. An expression evaluation modifier returns the result of an
  2994. expression. An expression can consist of simple integer arithmetic
  2995. operations, boolean expressions, or a combination of both.
  2996.  
  2997. An integer expression can involve the simple arithmetic operators
  2998.  +,-,*,/,% and can use parentheses to direct order of evaluation.
  2999. The % operator returns the remainder of a division.
  3000.  
  3001. The expression can involve integer values and alphabetic variable
  3002. names (used directly without the $$ token). 32-bit signed integers
  3003. are used in the evaluation of the expression.
  3004.  
  3005. e.g. to calculate a value and assign it to the variable 'c':-
  3006.  
  3007.    Vc=(22*r*2)/7
  3008. ~G
  3009. The arithmetic bit operations ! & and ^ represent OR AND and
  3010. EXCLUSIVE OR. For example:-
  3011.  
  3012.     2 ! 3    -> 3
  3013.     2 ^ 3    -> 1
  3014.     2 & 3    -> 2
  3015.  
  3016. Boolean expressions can be made up from the following operators,
  3017. each returning a 1 if true or a 0 if false.
  3018.  
  3019.    = or ==    equality of comparands
  3020.    ~~=        inequality of comparands
  3021.    < > <= >=    left operand less than, greater than, less than
  3022.         or equal, greater than or equal
  3023.    #c        truth of ~Fcondition~PFConditions~E 'c'
  3024.    "xstring"c    combined variable comparison and condition truth
  3025. ~G
  3026. Boolean conditions can be combined using the bit operators to
  3027. form compound conditions:-
  3028.  
  3029.    (a == 3) ! (a == 4)     evaluates true if a = 3 or 4
  3030.  
  3031. The condition flags are set after an expression evaluation as
  3032. though the result had been compared against zero. For an arithmetic
  3033. evaluation a negative result is tested using the condition flag 'l'.
  3034.  
  3035. The combined variable string comparison and condition truth
  3036. boolean is effectively a string comparison, with the added power
  3037. of the extra substring and ~Fpattern match~E condition codes. The
  3038. 'xstring' forms the parameter for an implicit ~FTest variable~A
  3039. action, with 'x' being a variable and 'string' being a comparand.
  3040. The condition codes are set accordingly, and the boolean returns
  3041. the truth of the specified condition code 'c'.
  3042. ~G
  3043. For a boolean expression, the 'n' condition code is set for a TRUE
  3044. result and a 'e' condition code for a FALSE result (this may seem
  3045. counter intuitive at first). The ~FQuick conditional~E expression
  3046. testing action can be used for convenient testing of boolean
  3047. expressions.
  3048.  
  3049. The triadic conditional choice expression is of the form:-
  3050.  
  3051.   expr?true expr:false expr
  3052.  
  3053. e.g.
  3054.  
  3055.   a<3?45:78
  3056.  
  3057.     - if variable a less than 3 return 45 else return 78
  3058.  
  3059. Each expression may be of the full expression form. Nested triadics
  3060. are therefore possible, but should be enclosed in parentheses.
  3061. .
  3062. .FRAME String Functions
  3063. .TITLE Modifier code &
  3064. ~X1Format:     &FParg
  3065.  
  3066. There are a number of functions which return a string or a number.
  3067. In the general form shown above, 'F' is the function code, 'P' is
  3068. an optional parameter and 'arg' is the argument string to apply
  3069. the function against.
  3070.  
  3071. ~X1[1]    ~FList of string functions~PA@C4Function~K1~E
  3072. .
  3073. .FRAME ASCII value of character
  3074. .TITLE Function code A
  3075. The 'A' function returns the ASCII value of the first character of
  3076. the remaining string, and is the same as the BASIC ASC() function.
  3077.  
  3078.    &AA
  3079.  
  3080. returns '65', as this is the ASCII decimal code for 'A'
  3081. .
  3082. .FRAME Scale number
  3083. .TITLE Function code B
  3084. The 'B' function is used to format numeric variables for
  3085. display with decimal places. It takes the next character
  3086. as the number of decimal places to display.
  3087.  
  3088.   &Bpvalue
  3089.  
  3090. returns 'value' with 'p' decimal places.
  3091.  
  3092.   &B212345       -  returns 123.45
  3093.  
  3094.   &B312          -  returns 0.012
  3095. .
  3096. .FRAME Character of code
  3097. .TITLE Function code C
  3098. The 'C' function returns the character equivalent to the ASCII
  3099. value provided by the remaining string, which is expected to be
  3100. numeric, and is the same as the BASIC CHR$$() function.
  3101.  
  3102.    &C66
  3103.  
  3104. returns 'B', as this is the character with ASCII code 66
  3105. .
  3106. .FRAME External function
  3107. .TITLE Function code c
  3108. The 'c' function passes its argument to a Resident Extension,
  3109. if there is one installed, and returns the result string.
  3110.  
  3111. For example, using the hrxfp floating point extension
  3112.  
  3113.   &c10/4          returns 2.5
  3114. .
  3115. .FRAME Display adaptor code
  3116. .TITLE Function code D
  3117. The 'D' function returns a single digit representing the type
  3118. of display adaptor currently in use. Codes returned are:-
  3119.  
  3120. 0       CGA adaptor
  3121. 1       Monochrome or Hercules adaptor
  3122. 2       EGA adaptor
  3123. 3       VGA adaptor
  3124.  
  3125. This ~sbutton~E displays the current monitor type
  3126. .
  3127. .SCRIPT button
  3128. VT&D
  3129. VT=T+1
  3130. P@mAdaptor($T)
  3131. .
  3132. .MENU Adaptor
  3133. CGA
  3134. Monochrome
  3135. EGA
  3136. VGA
  3137. .
  3138. .FRAME Extended key mapping
  3139. .TITLE Function code E
  3140. This function works as for the ~FM function~PFString mapped to key~E.
  3141. The extended mapping function &Eks should be used for function
  3142. key mappings, as 'ks' is specified as for action K.
  3143.  
  3144.     &EF8
  3145.  
  3146. returns the action string mapped to function key 8
  3147. .
  3148. .FRAME Substring from
  3149. .TITLE Function code F
  3150. The 'F' function takes the next character as a search argument, and
  3151. returns the substring from, and including, the located character,
  3152. or the full string if this is not found.
  3153.  
  3154.    &Fdabcdefg
  3155.  
  3156. returns 'defg', as this is the part of 'abcdefg' starting with 'd'
  3157. .
  3158. .FRAME Get key with timeout
  3159. .TITLE Function code G
  3160. The 'G' function takes the supplied numeric string as a
  3161. timeout period in hundredths of a second. It then awaits
  3162. a key depression and either returns the character pressed,
  3163. or a null string if the timeout occurs. The character can
  3164. be fed back as key input using the ~FUnget key code~E
  3165. action, for use in selections from frame displays etc.
  3166.  
  3167.    Vn&G300         - this waits 3 seconds for a key press
  3168.                      and loads it into 'n', or times out.
  3169. .
  3170. .FRAME Time of day
  3171. .TITLE Function code H
  3172. The 'H' function returns the time of day as hundredths of
  3173. a second. This can be used to time long periods of activity.
  3174. Short periods can be timed using the ~FDelta time~E function.
  3175.  
  3176.    &H
  3177.  
  3178. returns time of day.
  3179. .
  3180. .FRAME Index of character
  3181. .TITLE Function code I
  3182. The 'I' function takes the next character as a search argument, and
  3183. returns the index of this character within the remaining string, or
  3184. zero if it is not found. This is similar to the BASIC INSTR()
  3185. function, but only deals with a single character search argument.
  3186.  
  3187.    &Icabcdef
  3188.  
  3189. returns '3', as 'c' is the third letter in 'abcdef'
  3190. .
  3191. .FRAME Input from screen
  3192. .TITLE Function code i
  3193. ~X1Format: &i{default}
  3194.  
  3195. The 'i' function permits a string to be input at the current
  3196. text cursor location, with an optional default value supplied.
  3197.  
  3198. This function is intended for direct screen I/O in conjunction
  3199. with the 'i' action, and possibly with windows defined using
  3200. the ~~b2 and ~~b3 flags.
  3201.  
  3202. For example, to put a prompt on the screen and then input
  3203. a string, allowing a default, the following actions are used.
  3204.  
  3205.    i~~X10~~Y3Enter name: ~~c
  3206.    Vn&iFred
  3207.  
  3208. CAUTION: This function should be used with care
  3209. .
  3210. .FRAME Delta time
  3211. .TITLE Function code J
  3212. The 'J' function returns the time since the last call to
  3213. function 'J', function 'G', function 'H' or the last frame
  3214. display in hundredths of a second. It can be used to time
  3215. certain events, such as the time taken to select from a menu
  3216. or a frame.
  3217. .
  3218. .FRAME Prompted key input
  3219. .TITLE Function code K
  3220. The 'K' function takes the remaining string as a popup message,
  3221. awaits a key depression, and returns the character for the key
  3222. pressed. This is similar to the BASIC INKEY$$() function.
  3223.  
  3224.    &KPress Y or N
  3225.  
  3226. could return 'Y' or 'N' (or any character typed in response)
  3227. .
  3228. .FRAME Length of string
  3229. .TITLE Function code L
  3230. The 'L' function returns the length of the remaining text string in
  3231. the action, and is the same as the BASIC LEN() function.
  3232.  
  3233.    &Labc
  3234.  
  3235. returns '3', as there are three letters in 'abc'
  3236. .
  3237. .FRAME String mapped to key
  3238. .TITLE Function code M
  3239. The 'M' function takes the next character as a key character, and
  3240. returns the string mapped to that character (using the 'K' action),
  3241. or a null string if nothing is mapped.
  3242.  
  3243.    &Mh
  3244.  
  3245. could return 'NHelp', if the mapping action 'K#hNHelp' was in effect
  3246. .
  3247. .FRAME Indexed character
  3248. .TITLE Function code N
  3249. The 'N' function takes the next character as a numeric argument
  3250. specifying an index into the string. The character indexed in the
  3251. string is returned as the result of the function.
  3252.  
  3253.    &N4abcdef
  3254.  
  3255. returns 'd', as this is the 4th letter of 'abcdef'
  3256. .
  3257. .FRAME Application option setting
  3258. .TITLE Function code O
  3259. The 'O' function takes application flag specification following
  3260. and returns the character mapped to that flag.
  3261.  
  3262.      &OA
  3263.  
  3264. would return the character setting of flag 'A' (set via action O*A)
  3265. .
  3266. .FRAME Pick word
  3267. .TITLE Function code P
  3268. The 'P' function returns the word or number over which the mouse
  3269. cursor is positioned. This can be used for direct selection or
  3270. prompted selection of words. If any character follows the &P,
  3271. the word is echoed at wherever the text cursor is positioned.
  3272.  
  3273.     K#nN&P
  3274.  
  3275. When the 'n' key is pressed with the mouse positioned on a word,
  3276. this pops up a global note, if there is one, about the word.
  3277.  
  3278.     pSelect word to search for
  3279.     P
  3280.     A@S&P
  3281.  
  3282. This prompts for the selection, issues a null popup message
  3283. to await mouse selection with any key, then searches for the
  3284. selected word in the frame titles.
  3285. .
  3286. .FRAME Typed file details
  3287. .TITLE Function code p
  3288. Format: &pn
  3289.  
  3290. The 'p' function returns details about the current or previous
  3291. file which was typed using the ~FDisplay text file~E action.
  3292.  
  3293. The parameter 'n' may have the following values:-
  3294.  
  3295.     0 - returns 1 if file still available, else 0
  3296.     1 - returns current page number ?
  3297.     2 - returns current maximum page number ?
  3298.     3 - returns end of file page number or 999 if not reached ?
  3299.  
  3300. See Also: ~FTyped file name~E
  3301. .
  3302. .FRAME Pick reference
  3303. .TITLE Function code Q
  3304. The 'Q' function returns the action string for the reference over
  3305. which the mouse cursor is positioned, or a null string if not
  3306. over a reference. This can be used for processing the action in
  3307. other ways than executing it, when selected using a key other
  3308. than the Return key.
  3309.  
  3310.     &Q                   - returns the reference action
  3311. .
  3312. .FRAME Run option
  3313. .TITLE Function code R
  3314. The 'R' function returns the numeric value of one of the run
  3315. ~FOptions~E or ~FExtended Options~E. It takes a numeric parameter
  3316. equal to the option number (plus 10 for extended options).
  3317.  
  3318.     &R17                  - returns the tab stop width.
  3319.  
  3320.     &R4                   - returns the autoreference setting
  3321.  
  3322. Also for codes 20 onwards:-
  3323.  
  3324.  20 returns 1 if -s was specified on the command line
  3325.  21 returns 0 if -m was specified and 1 if not.
  3326.  22 returns the number of input files open using 'r'
  3327.  23 returns the number of output files open using 'w'
  3328.  24 returns 1 if U.K. date format, 0 if U.S. date format
  3329.  25 returns the number of frames listed in the
  3330.                 last search operation or contents list
  3331. .
  3332. .FRAME Substring indexed
  3333. .TITLE Function code S
  3334. The 'S' function takes the next character as a numeric argument
  3335. specifying an index into the string. The substring indexed in the
  3336. string is returned as the result of the function. This is similar
  3337. to a variant of the BASIC MID$$() function.
  3338.  
  3339.    &S4abcdef
  3340.  
  3341. returns 'def', as this is the substring starting at the 4th
  3342. character of 'abcdef'.
  3343. .
  3344. .FRAME Frame title string
  3345. .TITLE Function code T
  3346. The 'T' function takes the remaining string as a frame name, and
  3347. returns the title string for that frame.
  3348.  
  3349.    &TFrame title string
  3350.  
  3351. would return 'Function code T'
  3352. .
  3353. .FRAME Typed file name
  3354. .TITLE Function code t
  3355. Format: &t
  3356.  
  3357. The 't' function returns the filename of the current or previous
  3358. file which was typed using the ~FDisplay text file~E action.
  3359.  
  3360. See Also: ~FTyped file details~E
  3361. .
  3362. .FRAME Substring upto
  3363. .TITLE Function code U
  3364.  
  3365. The 'U' function takes the next character as a search argument,
  3366. and returns the substring up to, but not including, the located
  3367. character, or a null string if this is not found.
  3368.  
  3369.    &Udabcdefg
  3370.  
  3371. returns 'abc', as this is the substring of 'abcdefg' up to,
  3372. but not including, the letter 'd'.
  3373. .
  3374. .FRAME Configuration string value
  3375. .TITLE Function code V
  3376.  
  3377. The 'V' function takes the numeric argument as a ~Fconfiguration~E
  3378. string index and returns the string configured to that value
  3379.  
  3380.      &V56
  3381.  
  3382. would return the date format string
  3383. .
  3384. .FRAME Variable address
  3385. .TITLE Function code v
  3386. ~X1Format:  &vx
  3387.  
  3388. The 'v' function returns a string representing the segment and
  3389. offset address of the variable 'x', in a form usable by an
  3390. external program, so that the variable may be accessed.
  3391.  
  3392. The form of the string is two hexadecimal numbers separated by
  3393. a colon, as follows:-
  3394.  
  3395.     SSSS:OOOO
  3396.  
  3397. This string can be assigned to a variable and used in a command
  3398. line of an invoked program. This can then access and modify the
  3399. variable if it decodes the address first. If a variable is to
  3400. receive data, it must be large enough for that data, otherwise
  3401. information will be overwritten, with unpredictable results.
  3402.  
  3403. CAUTION: This function should be used with extreme care
  3404. .
  3405. .FRAME Whole string
  3406. .TITLE Function code W
  3407.  
  3408. The 'W' function returns the whole supplied string.
  3409.  
  3410. This is used to permit action modifier characters to be included
  3411. in the initial few characters of action strings.
  3412.  
  3413.      P&W?Hello
  3414.  
  3415. would popup the string '?Hello'
  3416.  
  3417. whereas
  3418.  
  3419.      P?Hello
  3420.  
  3421. would prompt for a string with 'Hello' and then pop it up
  3422. .
  3423. .FRAME Graphic X coordinate
  3424. .TITLE Function code X
  3425.  The 'X' function returns the column number of the mouse
  3426.  cursor when a button was pressed during the last graphic
  3427.  display.
  3428. .
  3429. .FRAME Graphic Y coordinate
  3430. .TITLE Function code Y
  3431.  The 'Y' function returns the line number of the mouse
  3432.  cursor when a button was pressed during the last graphic
  3433.  display.
  3434. .
  3435. .FRAME Graphic key press
  3436. .TITLE Function code Z
  3437.  The 'Z' function returns the key pressed during the last
  3438.  graphic display.
  3439. .
  3440. .FRAME Convert string
  3441. .TITLE Function code #
  3442. ~X1Format: &#vconv
  3443.  
  3444. The function '#' performs string conversion on the variable
  3445. 'v' according to the conversion string 'conv'.
  3446.  
  3447. The conversion string is taken as a string of directives to
  3448. show the conversion required. Directives can be as follows:-
  3449.  
  3450.     l      - convert to lowercase
  3451.     u      - convert to uppercase
  3452.     s      - strip superfluous spaces
  3453.     tv     - translate according to variable v
  3454.     rv     - remove characters in variable v
  3455.  
  3456. each directive can be made conditional by preceding it with:-
  3457.  
  3458.                       ic
  3459.  
  3460. where c is any condition code letter
  3461.  
  3462.    e.g. i3rr removes characters specified in variable 'r' if
  3463.         frame-local flag 3 is set
  3464.  
  3465. directives and conditional directives can be combined in a
  3466. single string:-
  3467.  
  3468.   e.g.  ls        - convert to lowercase and remove spaces
  3469.  
  3470. So, to convert variable x to lowercase and remove spaces:-
  3471.  
  3472.            Vx&#xls
  3473.  
  3474. The conversion string can be supplied from a variable simply
  3475. by using a variable token.
  3476.  
  3477.   e.g. to use the '~~' variable, the action is:-    Vx&#x$$~~
  3478. .
  3479. .FRAME Dynamic menu functions
  3480. .TITLE Modifier code @
  3481. ~X1Format:    @menuspec
  3482.  
  3483. The dynamic menu specification covers a range of menus and paged
  3484. selections. The selected choice from the dynamic menu becomes the
  3485. resulting string.
  3486.  
  3487. These menus are not necessarily 'dynamic', but the term does apply
  3488. to some of them, and is used collectively for all of them.
  3489.  
  3490. ~X1[1]    ~FList of dynamic menus~PA@C4Menuspec~K1~E
  3491. .
  3492. .FRAME Select backtrack
  3493. .TITLE Menuspec B and b
  3494. The '@B' dynamic menu presents a paged list from which a frame
  3495. can be selected, and returns the backtrack level number. This is
  3496. usually used with the 'b' action to unwind to a frame:-
  3497.  
  3498.     b@B
  3499.  
  3500. The following action will unwind fully to the entry frame
  3501.  
  3502.     b1
  3503.  
  3504. The '@b' dynamic menu presents a paged list from which a frame
  3505. can be selected, and returns the frame reference. This is usually
  3506. used with the 'A' action to revisit a frame without unwinding the
  3507. backtrack list:-
  3508.  
  3509.     A@b
  3510. .
  3511. .FRAME Contents list
  3512. .TITLE Menuspec C
  3513. The contents list menu '@C' presents a paged list of frames in the
  3514. current hyperfile, optionally refined using the variants shown below.
  3515. The contents list returns a frame selection action, and is usually
  3516. used with the 'A' action:-   A@C
  3517.  
  3518. @C0     Is the same as @C, and lists all frames in the hyperfile
  3519. @C1     Lists those frames matched in the last search
  3520. @C2     Lists those frames not matched in the last search
  3521.  
  3522. @C0, @C1 and @C2 can also have a string appended which is used to
  3523. refine the list to those frame names starting with the supplied string.
  3524.  
  3525. @C3string   Lists all frames starting from the first frame name
  3526.             starting with 'string'
  3527. @C4string   Lists all frames with titles starting with 'string'
  3528. @C5string   Lists all frames starting from the first frame with
  3529.             a title starting with 'string'
  3530.  
  3531. A@C3$$1     - lists all frames starting at the current frame
  3532. .
  3533. .FRAME Formatted list
  3534. .TITLE Menuspec G
  3535. ~X1Format:    @Gfilename{#page}{/search}
  3536.  
  3537. This is a variant of the ~FDisplay text file~E action, and is used for
  3538. producing formatted listings of files with special character
  3539. separated fields, for instance comma separated fields. The line to
  3540. be displayed is firstly split into a number of variables, then a
  3541. format line with embedded variable tokens is expanded and
  3542. displayed. The parameter specification, and the operation of the
  3543. list is as for the ~FDisplay text file~E action. Any comparisons for
  3544. searches are done done against the original line.
  3545.  
  3546. The ~AG mappings~PFGeneral mapping~E need to be set up before using the @G list.
  3547.  
  3548. KG5    variable split specification
  3549. KG6     selection expression
  3550. KG7    line format template, with variable tokens and
  3551.         two  %c tokens for key mapping
  3552. ~G
  3553. The G5 mapping should be a variable split specification, as for the
  3554. ~FFormatted read~E action, and will cause each line to be split into
  3555. the specified variables before display.
  3556.  
  3557. eg. KG5,abcd   - split line on commas into variables a, b, c and d
  3558.  
  3559. The G6 mapping is a 'selection expression'. This is an expression
  3560. as used in the ZI action. The variables set up by G5 can be tested
  3561. to provide a selection of records to be displayed.  If the
  3562. expression is true, the formatted line is displayed, otherwise the
  3563. record is ignored. Note that it is set to 1 by default as this is
  3564. true for all records, so this key mapping need not be explicitly
  3565. set. This expression is particularly effective with numeric fields,
  3566. and can be used with combination string comparisons for more power.
  3567.  
  3568. eg. KG6(a > 0) & (a < 11)
  3569.  
  3570. display only those records with field 'a' between 1 and 10.
  3571. ~G
  3572. The G7 mapping is a prototype line which is used to format the
  3573. variables and to provide an optional key mapping if reference
  3574. flags are added. Two %c tokens can be included, which will receive
  3575. the key map characters as used in other paged displays. Note
  3576. double dollars are used in the mapping line to delay expansion
  3577. until the display stage. Examples:-
  3578.  
  3579. KG7$$$$a~~C20$$$$b~~C40$$$$c~~C60$$d
  3580.  
  3581. - Simple tabulated list of variables a, b, c, d
  3582.  
  3583. KG7[%c]  ~~A$$$$a~~PSprocess($$$$a)~~K%c~~E ~~C40$$$$b~~C50$$$$c~~C60$$$$d
  3584.  
  3585. - Key mapped list with variable 'a' set as a reference to a script
  3586.   called using the value of 'a' as a parameter.
  3587. .
  3588. .FRAME Directory listing
  3589. .TITLE Menuspec D, d and E
  3590. ~X1Format:    @Dwildcardspec
  3591.  
  3592. The '@D' menu pops up a menu of files matching the wildcardspec,
  3593. and returns the filename selected. No extension is displayed in
  3594. the menu, and no extension is returned.
  3595.  
  3596. The '@d' works as for the '@D' menu, only the file extension is
  3597. included in the menu, and is returned on selection.
  3598.  
  3599. The '@E' works as for the '@D' menu, only the menu presented
  3600. only includes subdirectories.
  3601.  
  3602. The menu return can be used in any action, or dynamic menu,
  3603. requiring a file specification as a parameter.
  3604.  
  3605.       T@d*.TXT       - gives a menu of files with extension .TXT
  3606.                        then displays the file selected
  3607.  
  3608.       C@E*.*         - change to selected directory
  3609. .
  3610. .FRAME Popup menu
  3611. .TITLE Menuspec M,m and F
  3612. ~X1Format:    @Mmenuname
  3613.       @Ffilename
  3614.  
  3615. The popup menus simply present the menu named, and return the
  3616. option selected.
  3617.  
  3618. The '@F' menu uses the contents of a file as the menu.
  3619. The filename specified has a default extension of '.MNU'.
  3620.  
  3621.      Vp@Fprice           - uses PRICE.MNU as a menu
  3622. .
  3623. .FRAME Extended directory
  3624. .TITLE Menuspec L and l
  3625. ~X1Format:     @Lwildcardspec
  3626.        @lwildcardspec
  3627.  
  3628. The extended directory display '@L' presents a paged list
  3629. showing details of the files matching the wildcardspec, in
  3630. a similar fashion to the DOS DIR command. It returns a filename,
  3631. and should be used with an action requiring a filename parameter.
  3632.  
  3633.      G@L*.PIC        - lists all files with an extension .PIC
  3634.  
  3635. The extended directory display with actions added '@l' provides
  3636. its own action strings for typing a text file or changing to a
  3637. directory, and should be used with the 'A' action.
  3638. .
  3639. .FRAME Popup note
  3640. .TITLE Menuspec N,n and t
  3641. ~X1Format:     @Nnotename
  3642.        @tfilename
  3643.  
  3644. The popup note displays return the action string resulting from
  3645. selection of a reference within the note display. These do not
  3646. have to be used as actions, and a note can be used as a fancy
  3647. form of menu which can return any string for any purpose.
  3648. .
  3649. .FRAME Notepad selection
  3650. .TITLE Menuspec R
  3651. ~X1Format:     @R
  3652.  
  3653. The notepad display '@R' is used to display a paged list
  3654. showing the noted references and their associated comments,
  3655. and returns the selected reference action, it is usually
  3656. used with the 'A' action:-
  3657.  
  3658.      A@R
  3659. .
  3660. .FRAME Search selection
  3661. .TITLE Menuspec S,s,X and x
  3662. ~X1Format:    @Ssearch string
  3663.  
  3664. The search operations available are as follows:-
  3665.  
  3666.     Sstring      Search for string in titles of current file
  3667.     sstring      Search for string in titles of open files
  3668.     Xstring      Search for string in titles and texts of current file
  3669.     xstring      Search for string in titles and texts of open files
  3670.  
  3671. The title searches look for the search string in the frame name
  3672. and the title. A search string starting with the '^' character
  3673. indicates that a ~Fpattern match~E search is to be performed, and that
  3674. the remaining string forms the pattern. The search menus normally
  3675. return a frame selection action, but may also return other reference
  3676. actions. They should be used with the 'A' action:-
  3677.  
  3678.     A@S?Enter search string
  3679.  
  3680. The list of matches produced can be used for immediate selection,
  3681. or can be left to complete and subsequent selection made from a
  3682. restricted contents list:-
  3683.  
  3684.      A@C1
  3685.  
  3686. The search can be restricted to refine a previous search or to
  3687. add to a search. This is achieved by setting the search refinement
  3688. option O*6 as follows:-
  3689.  
  3690.    O*60       Search all frames
  3691.    O*61       Search frames matched in last search
  3692.               This refines the search (effectively an AND)
  3693.    O*62       Search frames not matched in last search
  3694.               This adds to the matched frames (OR condition)
  3695.    O*63       These work as for 1 and 2, but reset the option
  3696.    O*64             to 0 after the next search operation.
  3697.  
  3698. When an additive search is done, only the new matches are shown
  3699. in the search listing. A subsequent restricted contents list as
  3700. above will show all the matching frames.
  3701.  
  3702. If the option O*6 has 5 added to its value, the search listing
  3703. only shows the first page of lines matched, does not list the
  3704. frames for selection, and returns immediately the search is
  3705. complete or the user presses a key to abort the search. The
  3706. value of 5 is subtracted from the option value at the start of
  3707. the search, and the remaining value is used as indicated
  3708. above.
  3709.  
  3710. This feature is provided to allow combinations of searches to
  3711. be performed without user intervention, such as looking for
  3712. frames containing 'string a AND string b' or 'string a OR
  3713. string b'. Combinations of title search and text search should
  3714. start with the title search, as this will reduce the amount of
  3715. text searching required. The last search can be a normal
  3716. stopping search so that selection can be made from the
  3717. listing.
  3718. .
  3719. .FRAME Pattern strings
  3720. .TITLE Action suffix |
  3721. The pattern string may be optionally specified after an action
  3722. modifier to format the return string into a form expected by the
  3723. action. Pattern strings consist of the string expected as a
  3724. parameter, with all occurences of the chosen string represented
  3725. by the string '%s'. Up to three occurrences of the chosen string
  3726. may be expanded in the pattern string. An example is a command
  3727. to copy a file selected from a directory display to the root
  3728. directory of drive C:-
  3729.  
  3730.    d@d*.*|COPY %s C:\%s
  3731.  
  3732. This facility can be used for more complex formatting, if the
  3733. variants on the '%s' format token are used:-
  3734.  
  3735.     %{-}{nn){.mm}s    
  3736.       |  |    |
  3737.       |  |    maximum length (truncated at right end)
  3738.       |  minimum length (right aligned, space fill)
  3739.       left align (else right align)
  3740.  
  3741.  For example:-
  3742.  
  3743.     %s    full string as supplied
  3744.     %8s    string to minimum length of 8, right aligned
  3745.     %-8s        ditto, left aligned
  3746.     %.23s    string to maximum length of 23
  3747.  
  3748. For example, to shorten a variable, x, to 5 characters, and
  3749. enclose it in square brackets (function &W is used here):-
  3750.  
  3751.    V&W$$x|x[%.5s]
  3752.  
  3753. This facility is useful where you are formatting lines for
  3754. printout, to make things line up in columns.
  3755. .
  3756. .FRAME Paged displays
  3757. .TITLE Lists presented page by page
  3758. Paged displays provide a full screen display offering one line per
  3759. option, and offering multiple pages of options if necessary.
  3760.  
  3761. F1 or ?    - Help menu
  3762. F2 or #    - Go to page number (*T)
  3763. F3 or PgUp - Previous page
  3764. F4 or Home - Start of list/file
  3765. F5         - Find next match (*T)
  3766. F6 or /    - Search file (*T)
  3767. F7         - Redisplay page (*T)
  3768. F8 or End  - End of file (*T)
  3769. F9         - Quit (*T Suspend list)
  3770. F10        - Quit (*T Quit list)
  3771. Return     - Select reference (*T Suspend if not on reference)
  3772. INS/DEL    - Add / Remove reference from notepad
  3773.  
  3774. (*T - Type file control keys)
  3775. .
  3776. .PRINT SECTION 6.
  3777. .
  3778. .PRINT TITLE
  3779. Reference Guide - Variables
  3780. .
  3781. .PRINT PAGE
  3782. .
  3783. .FRAME Variables
  3784. .TITLE Section - containers for data
  3785. HyperShell permits strings to be assigned to 'variables'.
  3786. These are token characters which hold character or numeric data
  3787. strings and can be expanded anywhere in the displayed text, and
  3788. can also be used to parameterise the control strings of the
  3789. various ~Factions~E that may be performed.
  3790.  
  3791. There are three main types of variable:-
  3792.  
  3793. ~X1[1]    ~FSystem variables~K1~E - used for HyperShell details
  3794.  
  3795. ~X1[2]    ~FApplication variables~K2~E - used by applications
  3796.  
  3797. ~X1[3]    ~FNamed variables~K3~E - extra applications storage
  3798. .
  3799. .FRAME System variables
  3800. .TITLE Variables about HyperShell itself
  3801. There are a number of system variables, some of which may be
  3802. set by hyperfile applications, and some which can only be expanded.
  3803. The HyperShell system variables have the names '0' to '9' and some
  3804. special characters, and have the following string values:-
  3805.  
  3806.  0      full pathname of HyperShell program used
  3807.  1      current frame name
  3808.  2      current frame title
  3809.  3      current file name
  3810.  4      current date
  3811.  5      current time
  3812.  6      backtrack list current depth
  3813.  7      current directory
  3814.  8      original directory
  3815.  9      HyperShell name and version
  3816.  ?      error code of last error that occurred
  3817.  <      file name returned from last paged directory display
  3818.  >      filename extension returned from last long directory
  3819.  :      list of extensions to be excluded from TYPE action
  3820.  @      Available memory
  3821.  _      File prompt (becomes null string when viewing file)
  3822.  ^      Exit status from X,x,D,d action program execution
  3823.  \      Parameter supplied in parentheses to note or script
  3824.  `      Error action - action taken on error status set
  3825.  ~~      Variable specifying string conversions for comparisons
  3826.  ,      Pseudo variable - represents ';' in action mappings
  3827.  !      Pseudo variable - represents '!' in action mappings    
  3828.  
  3829. The ':' variable is a string representing those file extensions
  3830. for which the extended directory display providing actions
  3831. (dynamic menu 'l') will not set a 'Type file' action. It is set
  3832. to the following string by default:-
  3833.  
  3834.    .EXE.COM.OBJ.SYS.DBF.LIB.
  3835.  
  3836. Additional extensions can be added by resetting the variable.
  3837. Note that extensions should have a '.' to each side.
  3838. .
  3839. .FRAME Application variables
  3840. .TITLE Variables with single character names
  3841. Application variables are strings that may be stored under a
  3842. single letter name, either upper or lower case. Thus there can
  3843. be 52 application variables. Variables can be set within a
  3844. hyperfile and may be 'expanded' within the frame text or in an
  3845. action string.
  3846.  
  3847. Application variables are provided to allow a hyperfile to modify
  3848. its behaviour depending on circumstances. For instance, variables
  3849. may be used to input parameters one at a time in order to build
  3850. up a command line for execution under DOS, or to build an action
  3851. specification. Popup menus are useful for setting variables to
  3852. one of a fixed set of values.
  3853.  
  3854. In addition, an unlimited set of ~FNamed variables~E are available,
  3855. which provide for longer term storage of data, and for sets of
  3856. data in pseudo-arrays.
  3857. .
  3858. .FRAME Expansion of variables
  3859. .TITLE Variable token specification
  3860. The variable expansion token for system and applications variables
  3861. takes the form '$$x' where x is the variable name. This is expanded
  3862. to the string value of the variable.
  3863.  
  3864. The variable may be expanded in the frame text, in a note text, or
  3865. in an action string, where it may form any part of an action string
  3866. apart from the action code itself (although the 'A' action can be
  3867. used to permit the expansion of a variable to an action code).
  3868.  
  3869. The variable expansion token is simply the flag character $$
  3870. followed by the variable name character. e.g. :-
  3871.  
  3872.    $$a
  3873.  
  3874. If the '$$' symbol is required in the text, two '$$' symbols together
  3875. will be taken to mean one, which will not be expanded when the text
  3876. is displayed, or when an action string is expanded prior to execution.
  3877. This may be used when an action string in a reference in frame text
  3878. needs to contain a variable expansion token itself, but this must
  3879. not be expanded until the action is performed.
  3880. .
  3881. .FRAME Named variables
  3882. .TITLE Variables for longterm use
  3883. There are another set of variables which can be specified. These
  3884. are set and expanded in a different manner to single character
  3885. ~Fvariables~E. They are set using the ~FLoad named variable~E action or
  3886. the ~FSet Named Variable~E action.
  3887.  
  3888. Named variables are expanded using the form:-
  3889.  
  3890.    $$(name)
  3891.  
  3892. Where 'name' is the name of the variable. The name can be specified
  3893. by a string containing single character variable expansion tokens,
  3894.  
  3895. ~X1Example:
  3896.  
  3897.    $$($$n)  or   $$(item $$n)   or   $$($$n$$m)    etc.
  3898.  
  3899. Where n is a single letter variable containing the name of the
  3900. named variable. This feature can be used for pseudo-arrays with
  3901. a limited form of 'subscripting', or indirection.
  3902. ~G
  3903. It is possible to include a single character variable expansion
  3904. token within the named variable value string. This will be expanded
  3905. when the named variable is expanded.
  3906.  
  3907. ~X1Example:
  3908.  
  3909. ZVtime=Time: $$$$5
  3910.  
  3911. This will expand to the current time in the form 'Time: hh:mm:ss'
  3912. when specified in text as $$(time).
  3913. .
  3914. .PRINT SECTION 7.
  3915. .
  3916. .PRINT TITLE
  3917. Reference Guide - Conditions
  3918. .
  3919. .PRINT PAGE
  3920. .
  3921. .FRAME Conditions
  3922. .TITLE Section - Condition codes and flags
  3923. HyperShell provides a general system of condition codes which
  3924. can be used to control various aspects of display and execution.
  3925. The condition code token is a single character, which is
  3926. specified in ~Fconditional action~Es, ~FHidden lines~Es and also
  3927. in ~Fmenus~E.
  3928.  
  3929. The condition code has a number of potential values:-
  3930.  
  3931. ~X1[1]     ~FResult of test~K1~E - for variable tests
  3932.  
  3933. ~X1[2]     ~FError status~K2~E - for action errors
  3934.  
  3935. ~X1[3]     ~FReturn value~K3~E - for action modifier returns
  3936.  
  3937. ~X1[4]     ~FLocal flags~K4~E - for frame related control
  3938.  
  3939. ~X1[5]     ~FGlobal options~K5~E - for application options
  3940. .
  3941. .FRAME Result of test
  3942. .TITLE Condition set by test
  3943. The traditional use of a condition code is to determine the result
  3944. of a test or comparison. The first set of codes are used for this
  3945. purpose, and are set up by the ~Ftest variable~E action 'v'. The test
  3946. conditions available are as follows (note the lowercase form is used)
  3947.  
  3948.    e      variable equals string            *   !
  3949.    n      variable not equal to string          !
  3950.    g      variable greater than string      *   !
  3951.    l      variable less than string         *   !
  3952.    d      variable is defined
  3953.    u      variable is undefined
  3954.    c      variable contains string
  3955.    w      variable is contained within string
  3956.    m      variable matches a pattern            ~~
  3957.    f      variable fails a pattern match        ~~
  3958.  
  3959. ~G
  3960. Note that the conditions marked with an asterisk indicate lexical
  3961. comparisons unless the comparand string starts with a numeric
  3962. digit or a minus sign '-', in which case an arithmetic (integer)
  3963. comparison is made.
  3964.  
  3965. The condition codes marked with an exclamation point are also set
  3966. by use of the ~Fexpression evaluation~E function '=', indicating
  3967. how the result compares against zero. e.g. 'g' is set if the
  3968. result is positive.
  3969.  
  3970. The condition codes marked with a ~~ are only set if a pattern
  3971. match is performed, due to the variable '~~' being set. Code
  3972. 'f' is otherwise always set.
  3973. .
  3974. .FRAME Error status
  3975. .TITLE Condition set by error
  3976. The next set of codes are used to indicate whether the error
  3977. status is set, as follows:-
  3978.  
  3979.    s      the error status is set
  3980.    o      the error status is O.K. (clear)
  3981.  
  3982. The error status can be cleared to 'O.K.' by the action 'Y', and
  3983. will otherwise retain its setting, even if successful actions are
  3984. performed.
  3985. .
  3986. .FRAME Return value
  3987. .TITLE Condition set by action modifier
  3988. This set of condition codes are used to determine whether a
  3989. string is returned from ~Faction modifier functions~E, or whether
  3990. a null string was returned or the function cancelled.
  3991.  
  3992.    r      a string was returned
  3993.    b      a blank string was returned or the function was
  3994.           cancelled
  3995.  
  3996. These are very useful for a number of purposes, for example
  3997. to determine whether a selection has been made from a menu or
  3998. a string has been input to a request, or that a timeout has
  3999. occurred from a ~Fget key with timeout~E function.
  4000. .
  4001. .FRAME Special codes
  4002. .TITLE Condition codes for the IDE
  4003. A special set of condition codes are provided with the
  4004. integrated development environment (IDE), to allow a hyperfile
  4005. to determine which program is running and whether an item is
  4006. being edited or viewed.
  4007.  
  4008.       i        Integrated environment being used
  4009.       v        Item is being viewed, not edited
  4010.  
  4011. .
  4012. .FRAME Local flags
  4013. .TITLE Condition codes local to frame
  4014. This set of condition codes are flags which are local to each
  4015. frame. These are usually used to flag a matching frame after a
  4016. ~Fsearch selection~E, or to control ~FHidden lines~E in frames and
  4017. notes. They are set using the ~FLocal flag toggle~E.
  4018.  
  4019.    0 to 9     frame local flag.
  4020.  
  4021.    :          visited frame flag (set after frame visited)
  4022.    /          matching frame flag (set by searches)
  4023.    <          frame more than one screen
  4024.               this is set after display of first screen of
  4025.               frame text, but is available in the footer and
  4026.               on subsequent screens and visits to the frame.
  4027. .
  4028. .FRAME Global options
  4029. .TITLE Condition code for global control
  4030. The fourth set of condition codes represent a set of general
  4031. control flags which may be used to control a hypertext application
  4032. - the ~Fapplication options~E. These flags are set using the
  4033. ~Foption setting~E action O*X and are as follows:-
  4034.  
  4035.   A to Z      application options
  4036.  
  4037. These flags are character flags which evaluate TRUE if they are set
  4038. to other than a null character.
  4039. .
  4040. .PRINT SECTION 8.
  4041. .
  4042. .PRINT TITLE
  4043. Reference Guide - Restrictions
  4044. .
  4045. .PRINT PAGE
  4046. .
  4047. .FRAME Restrictions
  4048. .TITLE Section - limits and reserved chars
  4049. This section contains:-
  4050.  
  4051. ~X1[1]    ~FSize limits~K1~E
  4052.  
  4053. ~X1[2]    ~FNumber Limits~K2~E
  4054.  
  4055. ~X1[3]    ~FReserved characters~K3~E
  4056. .
  4057. .FRAME Size limits
  4058. .TITLE Maximum lengths
  4059. Line size, including flag characters, expanded variables etc. is
  4060. limited to 255 characters.
  4061.  
  4062. Frame name may be up to 35 characters.
  4063.  
  4064. Title length may be up to 40 characters.
  4065.  
  4066. Reference text length may be up to 39 characters.
  4067.  
  4068. Action strings may be up to 40 characters, or 79 in scripts.
  4069.  
  4070. Frame text can be up to 80 characters wide.
  4071.  
  4072. Frame text can be any number of lines deep although the recommended
  4073. limit is 24 - (header lines + footer lines).
  4074.  
  4075. Note, Script and menu names must be less than 35 characters.
  4076.  
  4077. Note text can be up to 76 characters wide and 22 lines deep, extra
  4078. text being truncated.
  4079. .
  4080. .FRAME Number limits
  4081. .TITLE Maximum counts
  4082. There can be up to 100 references per displayed screen, INCLUDING
  4083. headers and footers, and any note popped up containing references.
  4084.  
  4085. A menu can now be any length, but will be displayed in groups of
  4086. 20 options. A very large menu will exhibit a delay when showing
  4087. later options.
  4088.  
  4089. A script can contain up to 200 lines.
  4090. .
  4091. .FRAME Reserved characters
  4092. .TITLE Control characters
  4093. The following characters cannot appear within the second (or
  4094. third if the second is not one of them) position of an action
  4095. specification, apart from for their stated purpose.
  4096.  
  4097.     @      Dynamic menu
  4098.     &      String function
  4099.     !      Read record
  4100.     =      Expression evaluation
  4101.     %      Environment variable
  4102.     ?      Prompted input
  4103.  
  4104. Also, for frame selection action specification
  4105.  
  4106.     +      Next frame
  4107.     -      Previous frame
  4108.  
  4109. To include the above characters in the parameter to an action,
  4110. the ~Fwhole string~E function &W can be used to 'guard' any
  4111. special characters.
  4112.  
  4113. The following characters cannot appear in the body of an action
  4114. specification, apart from for their stated purpose.
  4115.  
  4116.    $$      Variable expansion token (code $$$$ for $$)
  4117.     |      Action modifier pattern specification
  4118.     ^      (Within frame names) Hyperfile separator
  4119.    ;      Multiple action separator
  4120.           (set up variable using &C to hold ';' character)
  4121.  
  4122. The following characters cannot appear within frame text, apart from
  4123. for their stated purpose.
  4124.  
  4125.    ~~      Reference and formatting directive flag (code ~~~~ for ~~)
  4126.    $$      Variable expansion token (code $$$$ for $$)
  4127.     .      (At beginning of line) Section flag
  4128.  
  4129. The '(' character cannot be used in a note or script name.
  4130. .
  4131. .PRINT SECTION 9.
  4132. .
  4133. .PRINT TITLE
  4134. Reference Guide - Codes
  4135. .
  4136. .PRINT PAGE
  4137. .
  4138. .FRAME Codes
  4139. .TITLE Section - Codes and mappings
  4140.     This section contains information about codes and setting.
  4141.  
  4142. ~X1[1]     ~FOptions~K1~E
  4143.  
  4144. ~X1[2]     ~FExtended options~K2~E
  4145.  
  4146. ~X1[3]     ~FColour codes~K3~E
  4147.  
  4148. ~X1[4]     ~FColour schemes~K4~E
  4149.  
  4150. ~X1[5]     ~FApplication options~K5~E
  4151.  
  4152. ~X1[6]     ~FControl key mapping~K6~E
  4153.  
  4154. ~X1[7]     ~FError codes~K7~E
  4155. .
  4156. .FRAME Options
  4157. .TITLE HyperShell control
  4158. Option Def   Value   Meaning
  4159.  
  4160. 0 (0) -   1 = Use restart file for notepad
  4161.           2 = Use restart file for notepad, variables and frame name
  4162.  
  4163. 1 (1) -  +1 = Symbols on menus
  4164.          +2 = Suppress function keys on menus
  4165.          +4 = Immediate (hot) menus on top line
  4166.  
  4167. 2 (1) -   1 = Record backtrack
  4168.  
  4169. 3 (1) -  +1 = Add hyperfile name as notepad extension
  4170.          +2 = Suppress INS and DEL key notepad action
  4171.  
  4172. 4 (0) -  +1 = Autoreference frame names
  4173.          +2 = Application specified autoreference
  4174.          +4 = Autoreference global note names
  4175. ~G
  4176. Option Def   Value   Meaning
  4177.  
  4178. 5 (0) -   1 = 'o' output to printer
  4179.           2 =    to standard text output
  4180.           3 =    to AUX device
  4181.           4 =    to output file (opened by 'w')
  4182.  
  4183. 6 (0) -  +1 = Display remaining space on exit
  4184.          +2 = Swap HS.EXE (~DFNB. only HS~DT) to disk on d and D actions
  4185.  
  4186. 7 (0) -   1 = Trace script labels
  4187.  
  4188. 8 (1) -   1 = Give warnings of unavailable items
  4189.  
  4190. 9 (0) -   1 = 'T' listing gives verbatim list
  4191.           2 =   also strips 8th bit, for Wordstar files
  4192. .
  4193. .FRAME Extended options
  4194. .TITLE HyperShell control
  4195. Option Def Value   Meaning
  4196.  
  4197.     *0 (1) -   1 = ESC key during popups, paged displays cancels script
  4198.  
  4199.     *1 (0) -   1 = Shadow edges on popups (uses G colour scheme)
  4200.  
  4201.     *2 (0) -   0 = No blinking
  4202.                1 = Blink mouse cursor
  4203.                2 = Blink mouse cursor and references using TAB/BackTAB
  4204.  
  4205.     *3 (0) -  +1 = Suppress mouse cursor
  4206.               +2 = Use cursor left/right to select references (as TAB)
  4207.  
  4208.     *4 (1) -   0 = Restrict autoreference to typed files
  4209.                1 = Include frame texts in autoref scope
  4210. ~G
  4211. Option Def Value   Meaning
  4212.  
  4213.     *5 (0) -   0 = Accept characters less than 128 only
  4214.                1 =    less than 176
  4215.                2 =    less than 199
  4216.  
  4217.     *6 (0) -   0 = Search all
  4218.                1 = Search matched frames     3 = reset after
  4219.                2 = Search unmatched frames   4 = reset after
  4220.               +5 - do 'non stop' search (+5 cleared after)
  4221.  
  4222.     *7 (8) -   n = Tabstop width
  4223.  
  4224.     *8 (1) -   1 = Request comment on noted references
  4225.  
  4226.     *9 (0) -   0 = case sensitive key mapping
  4227.                1 = case insensitive key mapping
  4228. .
  4229. .FRAME Application options
  4230. .TITLE Application hyperfile control
  4231. The application control options A to Z can be:-
  4232.  
  4233. Set to a character using ~FOption setting~E action O*X
  4234.  
  4235.    O*Fj    -  set option 'F' to 'j' (condition will be true)
  4236.    O*F     -  reset option 'F' (so condition is FALSE)
  4237.  
  4238. Used as a ~Fcondition code~PFGlobal options~E - A to Z
  4239.  
  4240.    aFPIt is set    -  popup message if option 'F' is set
  4241.  
  4242. Supplied using the ~FApplication option setting~E function &OX
  4243.  
  4244.    Vx&OF   -  set variable x to character value of option 'F'
  4245. .
  4246. .FRAME Control key mapping
  4247. .TITLE Control keys and headings
  4248. Certain control keys and headings are configurable using the
  4249. ~FSet key mapping~E action 'K', as follows:-
  4250.  
  4251.  Mapping Default      Used for
  4252.    KH1   SELECT FILE  (for directory popup menu)
  4253.    KH2   MHELP        (for ? key in frame display)
  4254.    KH3   HELP         (name of menu for ? in paged display)
  4255.    KH4   ZC           (ESCAPE mapping)    \
  4256.    KH5   y            (HOME mapping)       \
  4257.    KH6   ZR           (END mapping)        for frame display
  4258.    KH7   y-           (PGUP mapping)        /
  4259.    KH8   y+           (PGDN mapping)       /
  4260.    KH9   B            (BACKSPACE mapping) /
  4261.    KH0   HYPERSHELL   (Control menu heading)
  4262. .
  4263. .FRAME General mapping
  4264. .TITLE Control strings
  4265. The general mappings are a further set of control mappings.
  4266. These are configurable using the ~FSet key mapping~E action 'K',
  4267. as follows:-
  4268.  
  4269.  Mapping Default   Used for
  4270.  
  4271.    KG1   ""        ENTER / LEFT button action when not over ref
  4272.    KG2   ""        ENTER / LEFT button action in ~FDisplay text file~E
  4273.    KG3   ""        ESCape / RIGHT button action in ~FDisplay text file~E
  4274.    KG4   ""        End of title for ~FDisplay text file~E and @G
  4275.    KG5   ""        Variable split specification for ~FFormatted list~E
  4276.    KG6   "1"       Selection expression for ~FFormatted list~E
  4277.    KG7   ""        Line format template for ~FFormatted list~E
  4278.    KG8   ""        ~FString input translation~E ('from' characters)
  4279.    KG9   ""        ~FString input translation~E ('to' characters)
  4280.    KG0   ""        - Reserved -
  4281. .
  4282. .FRAME String input translation
  4283. .TITLE Mapping keys to special characters
  4284. The string input translation capability allows string input
  4285. characters to have a translation mapping applied against them.
  4286.  
  4287. String input is used in a number of places:-
  4288.  
  4289. 1. For input of strings on the prompt line at the bottom.
  4290.  
  4291. 2. For entry into input fields.
  4292.  
  4293. The translation converts specified character codes to other
  4294. specified character codes. This can be used for a number of
  4295. purposes, including:-
  4296.  
  4297. 1. Stopping the input of certain characters by translating them
  4298.    to a character which is rejected, such as TAB (ASCII 9).
  4299.  
  4300. 2. Mapping certain ALT shifted keys to accented characters for
  4301.    language learning applications. (Note: option setting O*51 or
  4302.    O*52 must be used to allow input of extended character set).
  4303. ~G
  4304. ~FGeneral mapping~E strings KG8 and KG9 provide the 'from' and 'to'
  4305. tables of characters. Whenever a character in the 'from' string
  4306. is input, it is translated to the corresponding character in
  4307. the 'to' string. Thus, to map the keys '%&*' to produce '!=^'
  4308. characters, the following settings are used:-
  4309.  
  4310.   KG8%&*
  4311.   KG9!=^
  4312.  
  4313. The two mapping strings must be the same length or results will
  4314. be unpredictable.
  4315.  
  4316. The mappings do not have any effect on single keystroke inputs, such
  4317. as function keys, menu selections, reference key mappings etc.
  4318. .
  4319. .FRAME Colour codes
  4320. .TITLE codes
  4321. Colour codes are as follows (monochrome in [brackets]):-
  4322.  
  4323.    K      Black [Inverse]
  4324.    B      Blue [Underline]
  4325.    G      Green
  4326.    C      Cyan
  4327.    R      Red
  4328.    M      Magenta
  4329.    Y      Yellow (brown)
  4330.    W      White (light grey) [Bright]
  4331.    k      Dark grey        (Foreground only)
  4332.    b      Light blue       (Foreground only)
  4333.    g      Light green      (Foreground only)
  4334.    c      Light Cyan       (Foreground only)
  4335.    r      Light red        (Foreground only)
  4336.    m      Light magenta    (Foreground only)
  4337.    y      Light yellow     (Foreground only)
  4338.    w      Bright white     (Foreground only)
  4339. .
  4340. .FRAME Colour schemes
  4341. .TITLE Global highlighting schemes
  4342. The available schemes are as follows, showing the scheme letter,
  4343. the default setting (foreground, background) and the normal usage.
  4344. ('User' schemes are not used by HyperShell):-
  4345.  
  4346.    Scheme colour mono      Description
  4347.  
  4348.    A      wB     BK        Action reference
  4349.    B      Wk(bl) Wk(bl)    Blink
  4350.    C      KC     KW        Menu choice
  4351.    D      KW     KW        Default title
  4352.    E      yK     wK        Frame reference - replace backtrack
  4353.    F      wK     wK        Frame reference - add to backtrack
  4354.    G      KK     KK        Ghost - used for shadows on popups
  4355.    H      KY     kW        Menu heading
  4356.    I      yY     KW        Input field
  4357.    J      KG     KW        Note heading and border
  4358.    K      yG     KW        Note
  4359.    L      RK     BK        Low intensity
  4360.    M      KW     kW        Menu reference
  4361.    N      gK     bK        Note reference
  4362.    O      yB     WK        Menu selection
  4363.    P      yr(bl) Kw(bl)    Popup message
  4364.    Q      Kk(bl) Kk(bl)    XOR for reference (with TAB/BackTAB)
  4365.    R      KW     Kw        Request / message
  4366.    S      yG     BW        Script reference
  4367.    T      WK     WK        Frame text
  4368.    U      YK     BK        (User 1)
  4369.    V      MK     bK        (User 2)
  4370.    W      GK     WK        (User 3)
  4371.    X      RK     kK        (User 4)
  4372.    Y      BK     BW        (User 5)
  4373.    Z      rK     KW        (User 6)
  4374. .
  4375. .FRAME Error codes
  4376. .TITLE Status codes for error conditions
  4377. The following error codes are set in variable '?'. The variable is
  4378. only reset on command (~Fby the 'Y' action~PFClear Status~E). An action
  4379. can be specified in ~Fsystem variable~PFsystem variables~E (`), which will
  4380. be performed when the status changes from UNSET to SET (once SET,
  4381. it should be RESET using 'Y' before the action will take place again).
  4382.  
  4383.     0      Success - (after status cleared)
  4384.     1      Operation cancelled
  4385.     2      No choice from menu
  4386.     3      End of file when reading
  4387.     4      Cannot open file
  4388.     5      File is not open
  4389.     6      File is already open
  4390.     7      File has changed
  4391.     8      At start of backtrack
  4392.     9      Divide by 0 in expression
  4393.     10     Value not expected in expression
  4394.     11     Value expected in expression
  4395.     12     Undefined opcode in expression
  4396.     13     Unmatched parenthesis in expression
  4397.     14     Syntax error in expression
  4398.     15     Script not available
  4399.     16     Menu not available
  4400.     17     Note not available
  4401.     18     Frame not available
  4402.     19     Key not defined
  4403.     20     Invalid key code
  4404.     21     Local reference - cannot be noted
  4405.     22     Not at reference when key pressed
  4406.     23     Key not mapped
  4407.     24     No action or action disabled
  4408.     25     Invalid action code
  4409.     26     No command present
  4410.     27     Environment variable not defined
  4411.     28     Invalid dynamic menu
  4412.     29     Line too wide for screen
  4413.     30     String too long
  4414.     31     Too many lines in frame
  4415.     32     Maximum script size reached
  4416.     33     Maximum menu size reached
  4417. .
  4418. .PRINT SECTION 10.
  4419. .
  4420. .PRINT TITLE
  4421. Reference Guide - Miscellaneous
  4422. .
  4423. .PRINT PAGE
  4424. .
  4425. .FRAME General
  4426. .TITLE Section - Miscellaneous information
  4427. This section contains information on:-
  4428.  
  4429. ~X1[1]    ~FConfiguration~K1~E
  4430.  
  4431. ~X1[2]    ~FAutoreference~K2~E
  4432.  
  4433. ~X1[3]    ~FAlternative Hypertext~K3~E
  4434.  
  4435. ~X1[4]    ~FExample script~K4~E
  4436. .
  4437. .FRAME Configuration
  4438. .TITLE Changing the look and feel
  4439. The option flags, extended options and key mappings permit a lot
  4440. of configuration to be done to individual hyperfiles. The colour
  4441. schemes permit the various highlighting to be fully configured.
  4442. Custom frame headers and footers can be used to create a
  4443. professional appearance to your application.
  4444.  
  4445. All the prompts, headings, format strings, error messages and
  4446. other strings can also be configured using a special file called
  4447. HYPSHELL.CFG. This provides mappings between configuration
  4448. string numbers and the strings to be used. If the file is not
  4449. supplied, default strings are used. Foreign languages can be
  4450. readily supported using this. Full details are provided in the
  4451. authoring guide.
  4452. .
  4453. .FRAME Autoreference
  4454. .TITLE Inserting references dynamically
  4455. The autoreference facility adds references dynamically as the
  4456. text is displayed. A number of kinds of autoreference are
  4457. provided.
  4458.  
  4459. 1. Frame name autoreference flags any occurrence of frame names
  4460.    in the text.
  4461.  
  4462. 2. Application autoreferencing allows specified search strings
  4463.    to be mapped to specified actions.
  4464.  
  4465. 3. Global note name autoreference flags occurrences of global
  4466.    note names in the text.
  4467.  
  4468. Both kinds of autoreference can be applied to just text
  4469. displayed using the ~Fdisplay text file~E action, or to
  4470. frame text displays as well as text files.
  4471. .
  4472. .FRAME Alternative hypertext
  4473. .TITLE Other forms of hypertext
  4474. The HyperShell single hyperfile format described in this file is
  4475. normally used for hypertext systems. HyperShell does, however,
  4476. provide a number of features which support an alternative to
  4477. this format.
  4478.  
  4479. The 'T' and 't' actions, described above, permit normal text files
  4480. to be displayed, and these files can contain simple embedded
  4481. references to other files, for display in a paged fashion using 'T'
  4482. or as a popup note using 't'. The authoring guide gives a
  4483. description of how this can be done.
  4484.  
  4485. If HyperShell is given the name of one of these simple text files,
  4486. rather than that of a normal hyperfile, it displays the file as a
  4487. single frame, possibly with multiple pages. Thus, it is not even
  4488. necessary to have a controlling hyperfile. Although it would not be
  4489. usual to do so, such a file could contain HEADER, FOOTER and global
  4490. items, provided these were supplied AFTER the main text in the
  4491. file.
  4492. .
  4493. .FRAME Example script
  4494. .TITLE to show how script works
  4495. The following script, when called with a parameter e.g.
  4496.  
  4497.     Slines(read.me)
  4498.  
  4499. counts the lines in the file whose name is supplied as a
  4500. parameter and displays the total on the bottom line.
  4501.  
  4502. The script is normally coded with a number of actions on
  4503. each line, but it is coded here with one action per line
  4504. so that comments can be added (these cannot appear on the
  4505. actual script).
  4506.  
  4507. Note that it is good practice to start a new line after a jump
  4508. or conditional jump. Labels must appear at the start of a line.
  4509.  
  4510. If there is an error opening the file, an error message will
  4511. have been displayed already, so we just quit. The error status
  4512. from the read is assumed to be an end of file indication. Note
  4513. that you must remember to close the file when you have finished
  4514. with it, otherwise it remains open until you quit HyperShell.~G
  4515. ~C6.SCRIPT lines          - select action for details
  4516. ~Fv\~PFTest variable~E                     - is there a ~Fparameter~PFparameters~E
  4517. ~FjeERROR~PFjump within script~E                - no - go to error display ----\
  4518. ~FVx0~PFSet variable~E                    - set count variable to zero   |
  4519. ~FY~PFclear status~E                      - clear error status           |
  4520. ~Fr$$\~PFOpen/close input file~E                    - open file                    |
  4521. ~Fasq~PFConditional action~E                    - quit if error                |
  4522. ~FLREAD~PFLabel in script~E                  - Label for read    <-------------\
  4523. ~FY~PFclear status~E                      - clear error status           |  |
  4524. Vy~F!~PFRead and lookup functions~E                    - read record into variable y  |  |
  4525. j~FsEOF~PFconditions~E                  - if end of file goto display --- | \
  4526. Vx~F=x+1~PFexpression evaluation~E                 - increment count variable     |  | |
  4527. ~FJREAD~PFjump within script~E                  - loop back to read  -------------/ |
  4528. ~FLERROR~PFlabel in script~E                 - error display label  <-------/    |
  4529. ~FPNo parameter supplied~PFpopup message~E     - display error message         |
  4530. ~Fq~PFquit script~E                      - quit script  ----------------\    |
  4531. ~FLEOF~PFlabel in script~E                   - End of file label    <------------/
  4532. ~Fr~PFopen/close input file~E                      - close file                   |
  4533. ~FpThere were $$x lines read~PFdisplay message~E          - display count    |
  4534. ~C6.                      - quit script at end           v
  4535. .
  4536. .END 
  4537.         End of HSREF.HYP
  4538. .
  4539.