home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / hdk11a.zip / HELPC.DOC < prev    next >
Text File  |  1994-01-08  |  55KB  |  1,308 lines

  1.  
  2.  ╔══════════════════════════════════════════════════════════════════════════╗
  3.  ║                                                                          ║
  4.  ║                               HyperAct, Inc.                             ║
  5.  ║                               P.O.Box. 5517                              ║
  6.  ║                         Coralville IA 52241 U.S.A                        ║
  7.  ║                          Compuserve - 76350,333                          ║
  8.  ║                        Phone/Fax - (319) 351-8413                        ║
  9.  ║                                                                          ║
  10.  ╚══════════════════════════════════════════════════════════════════════════╝ 
  11.  
  12. *******************************************************************************
  13. *      helpC Help Engine Technical specification and compiler user guide      *
  14. *           LAST UPDATE - Jan. 03, 1993. (c) 1992,93 - Loewy Ron.             *
  15. *******************************************************************************
  16.  
  17. *******************************************************************************
  18. *                              General Overview                               *
  19. *******************************************************************************
  20.  
  21. The Help Engine database is a combination of text that is read by the user,
  22. and a Topic and Links database that allows the user to view the topics
  23. he is interested in, using hyper-text methods.
  24.  
  25. This document describes the HLPDK language syntax, helpC compiler operation
  26. and the native databases structure.
  27.  
  28. *******************************************************************************
  29. *                               Compiler Usage                                *
  30. *******************************************************************************
  31.  
  32. The helpC help compiler is a DOS command line program that receives a 
  33. help definition file (.HDF) and produce a help database. 
  34.  
  35. The helpC command line is :
  36.  
  37.   HELPC source.hdf [/NT:topic-table-name] 
  38.                    [/NL:link-table-name] 
  39.                    [/ND:data-file-name] 
  40.                    [/NK:keywords-table-name] 
  41.                    [/D:conditional-define]
  42.                    [/ED=P|C|+]
  43.                    [/EL=x]
  44.                    [/FC+]
  45.                    [/EA+]
  46.                    [/TN+]
  47.                    [/R+] [/ST-] [/CS+] [/EP+] [/WD-][/RM-]
  48.                    [/W+] [/W30] [/W31] [TH+] [/QH+] [/TV+] [/PH+] [/XD+]
  49.                    [/PX+] [/MT+] [/OS2] [/TXT] [/RTF] [/PP+] [/MMV]
  50.                    [/WWW]
  51.  
  52. When the target of the compiler is one of the native help engines
  53. the output of the compiler is a set data file called source.SET, that
  54. includes the names of the other help database components. 
  55.  
  56. Please Notice - if the /W+ /W30 or /W31 switch is defined, the compiler 
  57. will generate a .HPJ and .RTF files that can be used with the Microsoft 
  58. HC (v3.00b) or HC31 help compiler, and output a .HLP windows help file!. 
  59.  
  60. By default the help compiler does not produces a help cross reference 
  61. report on the topics/links used in the database, if the /R+ switch is set, 
  62. a cross-reference report will be generated, and database integrity indicators 
  63. will be given. Notice, however, that with the /R+ switch HELPC is much
  64. slower than with /R-.
  65.  
  66. IMPORTANT - Scan the output cross reference report for links defined, that
  67. are not defined as topics!
  68.  
  69. Notice - An additional switch is available that instructs the help compiler
  70. to indicate it's parse and code generation progress. Use the /EP+ switch to
  71. see that the helpC compiler is active. Please understand that the compile
  72. process can take a long time, on complex help databases. This switch does
  73. nothing more that ensure to you that the help compiler is alive. 
  74.  
  75. The /ST switch defines if the topic name defined in the .TOPIC command
  76. can include embedded spaces. By default this switch is set to /ST- (No
  77. embedded spaces).
  78.  
  79. The /CS switch turns Topics and Links case sensitivity to ON. Use this
  80. switch with care - Only if you must have a lower/mixed case index in THELP
  81. or PopHelp use this switch. Notice that help databases that compile fine
  82. with case sensitivity set to off, might fail to do so in case sensitivity
  83. on. By default this switch is set to off (-).
  84.  
  85. The /XD switch generates code to the MDVXHELP help compiler, available
  86. free in the file DVXHLP10.ZIP on the Internet. When this switch is given,
  87. a set of cover and section files is generated, as well as a response
  88. file that should be used to compile the help database.
  89.  
  90. The /OS2 switch generates IPF source code. You must compile the generated code 
  91. with IPFC, from within an OS/2 session (window or full screen).
  92.  
  93. The /WD switch controls Warning Display. By default Warning Display is On, if
  94. you do not want to see the Warnings issued by the compiler when a topic name 
  95. or link are found to be incompatible with the target source, and helpC 
  96. translate them to be syntax compatible with the target.
  97.  
  98. Use the /TXT switch to create a text file document from your .HDF source.
  99. With this feature you can create on-line help and printed documentation
  100. from the same source!.
  101.  
  102. Use the /RTF switch to create a word-processor ready RTF file, import this
  103. file (and update the fields e.g.- F9 in WinWord) to create a professional
  104. formatted documentation from the same source code!.
  105.  
  106. The /RM- switch uses disk cross-reference report tables. Usage of this 
  107. option will allow the creation of cross-reference report for huge databases.
  108. This options will slow the creation of reports, use it only for databases
  109. so big that the report can not be generated using memory tables.
  110.  
  111. The /ED= switch creates the external references (if any are defined) in one
  112. of the following formats : /ED=P (Default) creates the external definitions
  113. in a PASCAL unit, /ED=C creates the external definitions in a C header 
  114. file, and /ED=+ creates a C++ header file.
  115.  
  116. The /EL= switch sets the Error Level used. This switch can be overridden
  117. by the .ERRORLEVEL statement. The acceptable error levels are :
  118.  
  119.   0    No Check  - (Default) - No action is taken.
  120.   1    Trap      - The link is replaced to a special topic named ERROR.
  121.   2    Strip     - The link is replaced by the Text part only.
  122.   3    Delete    - The text and link parts are deleted.
  123.   9    Abort     - helpC will abort with an error message, indicating the 
  124.                    line number.
  125. Please refer to the Exception Handling section below about helpC error
  126. processing.
  127.  
  128. The /FC+ switch forces topic collection, even if the error level is 0, that
  129. does not require collection.
  130.  
  131. Use the /PP+ switch to create an export file, to be used in multiple database
  132. target files projects.
  133.  
  134. The /EA+ switch is used to export all topics in a database, during a 
  135. PreProcess target generation, compared to exporting only topics that
  136. have the .EXPORT attributes.
  137.  
  138. The /MMV switch is used to generate Microsoft Multimedia Viewer 2.0 code,
  139. You must use the WMVC.EXE program that came with your copy of the Multimedia
  140. Publishing ToolKit (MM PTK) to compile this code.
  141.  
  142. The /WWW switch is used to generate World Wide Web HTML (Hypertext Markup 
  143. Language) sources, for use in the internet distributed hypertext database.
  144.  
  145. If the /TN+ switch is used, Topics are collected to the Table Of Contents
  146. table, and the .INSERT TOC command can be used. If a database has a .INSERT
  147. TOC with the /TN+ switch not specified, the compiler will stop and complain.
  148.  
  149. *******************************************************************************
  150. *                                Command Line                                 *
  151. *******************************************************************************
  152.  
  153. The compiler switches are defined on the command line. These switches can
  154. be placed before and after the source file name. The compiler will look for
  155. a file named HELPC.CFG in the current directory, and process it before any
  156. command line switches are processed. 
  157.  
  158. Switches on the command line will over-ride switches set before them, on the
  159. command line or in one of the lines of the response options file(s).
  160.  
  161. Response option files can be specified by prefixing their name with a @ sign.
  162.  
  163. Examples :
  164.  
  165. If our HELPC.CFG file, in the current directory is :
  166.  
  167. /W31
  168. /R-
  169.  
  170. And we compile using HELPC HELPDEMO
  171.  
  172. The helpdemo.hdf file will be compiled, with the target set to winHelp 3.1
  173. and no cross-reference report.
  174.  
  175. Compile using HELPC HELPDEMO /r+
  176.  
  177. Will create winHelp 3.1 sources, but a report will be generated.
  178.  
  179. Compile using HELPC /w- HELPDEMO
  180.  
  181. Will generate native format help database, no report is generated.
  182.  
  183. If we have a file called MYSWITCH.CFG with the following lines :
  184.  
  185. /TH+
  186. /ST-
  187. /CS+
  188.  
  189. And we compile using HELPC @MYSWITCH.CFG HELPDEMO
  190.  
  191. A THELP source, using Long Topic Names, with case sensitivity will be 
  192. generated, no cross reference report is generated. (HELPC.CFG contains /r-)
  193.  
  194. *******************************************************************************
  195. *                           Help Definition Format                            *
  196. *******************************************************************************
  197.  
  198. The help definition file format is as follows :
  199.  
  200.   remarks ...
  201.   remarks ...
  202.  
  203.   .ENTRY topic-name
  204.   [.TITLE optional title for topic]
  205.   [.TITLEATTR paragraph attributes]
  206.   [.KEYWORDS optional keywords for topic]
  207.   [.GROUPS group1 [group2 ..]]
  208.   [.LIST optional browse list for topic]
  209.   [.ACTION stuff to do when topic is entered]
  210.   [.EXPORT]
  211.   topic text and link reference .. 
  212.   topic text and link reference .. 
  213.   topic text and link reference .. 
  214.   topic text and link reference .. 
  215.   .END-ENTRY 
  216.  
  217.   remarks ...
  218.  
  219.  
  220.   .ENTRY topic2-name
  221.   [.KEYWORDS keyword1 keyword2 ..]
  222.   [.GROUPS group3 [group2 ..]]
  223.   [.PARAGRAPH [paragraph attributes]]
  224.   topic 2 text and link reference .. 
  225.   topic 2 text and link reference .. 
  226.   topic 2 text and link reference .. 
  227.   [.END-PARAGRAPH]
  228.   additional topic2 text ...
  229.   .END-ENTRY 
  230.   
  231.   .POPUP PopUp-name
  232.   [.TITLE optional title for PopUp]
  233.     definition for some reference
  234.     ...
  235.   .END-POPUP
  236.  
  237.  
  238. As can be seen - lines between the .ENTRY and .END-ENTRY keywords are
  239. the lines processed by the help compiler, to create the help database, 
  240. every other line is considered a remark, and is not parsed or evaluated by
  241. the help compiler.
  242.  
  243. The topic text and link reference lines are simple text lines, with
  244. special link marks.
  245.  
  246. A sample will provide the details :
  247.  
  248.   This is a text help line that includes one ~link~link-topic-name~ in it.
  249.  
  250. This line will be displayed in the help engine program as :
  251.  
  252.   This is a text help line that includes one link in it.
  253.  
  254. The word "link" will be in a different color then the rest of the line, 
  255. to indicate that this is a link. If the user hi-lights the link, and
  256. presses Enter (or points the mouse cursor and clicks), the help engine will
  257. look for a topic called "link-topic-name", and display it.
  258.  
  259. Browse the HELPDEMO.HDF file for a demo of a help database definition file.
  260.  
  261. Notes :
  262.  
  263.  1. The keywords .TOPIC and .END-TOPIC can be used instead of .ENTRY and
  264.     .END-ENTRY respectively. 
  265.  
  266.     An equivalent pair of keywords are .TOP and .ENDTOP .
  267.  
  268.     You can use .EXT-TOPIC instead of .TOPIC/.ENTRY etc.. - topics created
  269.     with that statement are the same as regular topics, only - an external
  270.     reference is created for them to be linked to a PASCAL/C/C++ program.
  271.  
  272.  2. Keywords are NOT case sensitive (.topic = .TOPIC = .eNTry)
  273.  
  274.  3. The .TITLE keyword is optional. If no title is defined, the topic name
  275.     is used as a title. The .TITLEATTR keyword is used to describe the
  276.     title text attributes. The syntax is the same as the .PARAGRAPH text
  277.     attributes. Please refer to the Text Attributes section below for further
  278.     discussion of the optional paragraph attributes. In the WINHELP and
  279.     Multimedia targets, the title can have links in it, so graphic and
  280.     inter-paragraph text attributes can be applied.
  281.  
  282.  4. If you want the ~ sign to appear in your help database, use ~~ in your
  283.     help source file (e.g. "This is a ~~" will be "This is a ~" in the final
  284.     help database.).
  285.  
  286.  5. The Optional .PARAGRAPH and .END-PARAGRAPH commands in the help topic text,
  287.     specify the start and the end of a paragraph. This feature is currently 
  288.     supported only for MMViewer, WWW, winHelp, RTF and IPF sources. This feature 
  289.     is important if you want to create long paragraphs that will wrap correctly
  290.     when a user re-sizes the help window. Please refer to the Text Attributes 
  291.     section below for further discussion of the optional paragraph attributes.
  292.  
  293.     The .PAR and .ENDPAR keywords can be used instead of the .PARAGRAPH and
  294.     .END-PARAGRAPH keywords.
  295.  
  296.  6. When a .PARAGRAPH is issued, a .END-PARAGRAPH MUST be specified at the
  297.     end of the paragraph. These commands must appear as the first words in
  298.     a line. The text after the .PARAGRAPH command is NOT part of the text 
  299.     of the help topic, but paragraph text attributes can be specified there.
  300.  
  301.  7. The optional .KEYWORDS command can appear after the .TITLE command
  302.     (If there is one), or the .TOPIC header (otherwise), Use this command
  303.     to help the user search for sets of topics that are connected to a 
  304.     specific keyword. The syntax of this command is :
  305.  
  306.       .KEYWORDS keyword-1 keyword-2 ... 
  307.     
  308.     Multiple .KEYWORDS lines are allowed, if there are a lot of KEYWORDS,
  309.     that will not fit on a single line, multiple .KEYWORDS lines can be
  310.     used. (NewsDB - The usenet hypertext generator uses that feature).
  311.  
  312.  8. .POPUP and .END-POPUP (or .ENDPOP) are used to define PopUp topics that 
  313.     are displayed on the same screen as the original topic that includes the
  314.     link to them. PopUp entries allow the user to consult a glossary, and 
  315.     not lose the topic he was reading. Popups are supported in the winHelp,
  316.     OS2 IPF, Native PX/Mem and MMViewer formats. In the other formats Popups are 
  317.     used as standard topics.
  318.  
  319.  9. In the Text/RTF targets .POPUP entries will be automatically included in a 
  320.     Glossary file that you can add as an appendix to your documentation.
  321.  
  322. 10. The .GROUPS statement associate a topic with several groups, you can 
  323.     create topics with menus to groups of other topics using the statement
  324.     ".INSERT GROUP group-name" in your topic text. Please refer to the 
  325.     Groups section of this document for additional discussion of this
  326.     function.
  327.     Multiple .GROUPS lines are allowed, if there are a lot of GROUPS,
  328.     that will not fit on a single line, multiple .GROUPS lines can be
  329.     used.
  330.  
  331. 11. The .LIST attribute associates a topic to a browse sequence, in this
  332.     name. The topic will be after the previous topic that belongs to this
  333.     list, and before the next topic that belongs to this list. The list
  334.     browse sequences are currently supported in the winHelp and MMViewer
  335.     targets only.
  336.  
  337. 12. Graphic support is available by using a Graphic Link. A Graphic Link
  338.     has the following format :
  339.     
  340.       ~Text to display if not a graphic target~graphic-name~
  341.     
  342.     Where graphic-name is the name of a graphic object defined with the
  343.     .GRAPHIC statement. Please refer to the Graphics Section below for more
  344.     information.
  345.  
  346. 13. If the .EXPORT attribute is specified, HELPC will automatically create
  347.     a reference to the topic in an export file. This function can be useful
  348.     when you create a multiple file target database. This command can be very
  349.     useful when you have to create a complex multi file database, and use a
  350.     "make" utility to maintain the project. For more information about this
  351.     attribute, please refer to the Complex Projects section below.
  352.  
  353. 14. Sound support is available by using a Sound link. This link will play a 
  354.     sound file, when the user clicks the link. The link has the following
  355.     format :  
  356.       
  357.       ~Text-That-Will-Appear~soundLinkName~
  358.     
  359.     Where Text-That-Will-Appear will be displayed on the screen, and when the
  360.     text will be clicked, the sound object defined as soundLinkName will be
  361.     played. Please refer to the Sound section below.
  362.  
  363. 15. Applications can be launched from the help database by clicking a link, that
  364.     was defined as an application. The syntax is : ~Text~application-link~
  365.     where Text is the text that will appear to the user, and application-link
  366.     is the identifier of the application that will be executed, as defined in
  367.     the .APPLICATION statement. Please refer to the Application Launch section
  368.     below for more information.
  369.  
  370. 16. User defined links (.USERLINK) can be created and used in the topic text, 
  371.     please refer to the Links section below for discussion of this feature.
  372.  
  373. 17. The .ACTION attribute of the topic, can be used to start some action(s), 
  374.     when the user enters the topic. This feature is supported in the WINHELP
  375.     and MULTIMEDIA VIEWER targets. 
  376.     e.g.  .ACTION SndPlaySound("EXPLAIN.WAV",1)
  377.     Will use the MMSYSTEM high level sound routine (That has to be registered)
  378.     to play a WAV file called EXPLAIN.WAV.
  379.     Multiple .ACTION lines can be specified.
  380.  
  381. Additional commands include :
  382.  
  383. .TEXTCOLOR, .LINKCOLOR and .LINKHIGH - VGA colors of text and links in normal 
  384. and high (selected) states in the native help formats.
  385.  
  386. The syntax of these commands is :
  387.  
  388.   .TEXTCOLOR w 
  389.  
  390. or 
  391.  
  392.   .LINKCOLOR x
  393.  
  394. or
  395.  
  396.   .LINKHIGH y
  397.  
  398. Where w, x and y are the color of the text/link, which is a combination of the 
  399. color of the foreground with the color of the background multiplied by 16.
  400.  
  401. The colors that can be used for both fore and background are :
  402.  
  403.   Black     = 0
  404.   Blue      = 1
  405.   Green     = 2
  406.   Cyan      = 3
  407.   Red       = 4
  408.   Magenta   = 5
  409.   Brown     = 6
  410.   LightGray = 7
  411.  
  412. The colors that can be used only for the foreground are :
  413.  
  414.   DarkGray     = 8
  415.   LightBlue    = 9
  416.   LightGreen   = 10
  417.   LightCyan    = 11
  418.   LightRed     = 12
  419.   LightMagenta = 13
  420.   Yellow       = 14
  421.   White        = 15
  422.  
  423. For example : to set the normal color of a link to light green on blue, use
  424.  
  425.   .LINKCOLOR 26
  426.  
  427. where 26 = 10 + 16 * 1. (10 = light green, 1 = blue).
  428.  
  429. Creating Multiple Source Projects :
  430.  
  431. Use the .INCLUDE commands in the source of your .HDF file, to include an
  432. additional source file. .INCLUDE is not supported in the middle of a topic.
  433.  
  434. For Example :
  435.  
  436.   .. some stuff 
  437.   .include 2ndfile.hdf
  438.   .. additional stuff
  439.  
  440. will process 2NDFILE.HDF in the middle of our source file.
  441.  
  442. Please notice - .INCLUDE commands can be nested in your source file,
  443. it is however not recommended to nest them too deep, helpC does not
  444. close the input file when a .INCLUDEd file is processed, in order to
  445. minimize help generation time - there is however, a limit on the number
  446. of open files that can be used by a program - this is a limit set by DOS.
  447.  
  448. Code Insertion :
  449.  
  450. Use the .INSERT CODE statement to insert target code that will not be 
  451. translated by helpC. helpC will send un-translated code to the output target
  452. until a .END-CODE statement is found.
  453.  
  454. For example - creating a small table in winHelp format :
  455.   
  456.   .. normal code
  457.   .ifdef windows
  458.   .insert code
  459.   \pard{\tab column1\tab column2\tab column3}\par
  460.   \pard{\par blabla\tab blabli ..}\par
  461.   .end-code
  462.   .endif
  463.  
  464. Table Of Contents :
  465.  
  466. Use the .INSERT TOC command to insert the Table Of Contents of all the topics
  467. defined in the database, sorted by alphanumeric order. Notice that databases
  468. that use this command should be compiled using the /TN+ switch
  469.  
  470. GUI Font based targets :
  471.  
  472. The .FIXEDFONT command is used to define a non proportional font as the 
  473. default font of the help database. Currently the only targets affected
  474. by this command are MMViewer, winHelp and RTF. If you find that your help 
  475. databases are not aligned after they are converted to winHelp format, use 
  476. this command and re-compile. This command has no effect on targets that are 
  477. different from the targets mentioned above.
  478.  
  479. The .PCFONT command is used to define a font that has the standard PC 
  480. character set (Terminal - in windows). If you convert a text based 
  481. database that uses the PC's special characters, use this command to
  482. set the default font. This command has no effect on targets that are 
  483. different from the targets mentioned above.
  484.  
  485. Text targets :
  486.  
  487. The .PAGELENGTH and .PAGEWIDTH statements set the printed page length in
  488. rows, and width in columns. The syntax is .PAGELENGTH xx or .PAGEWIDTH yy .
  489.  
  490. Font Pallete :
  491.  
  492. Use the .SETFONT command to change or add fonts to the font palette, The 
  493. syntax is : .SETFONT font-number 'Font-Name-In-The-Target-Language'. If
  494. for example we would like to change font number 3 in the windows target
  495. to be a font X of family Y we would write : 
  496.  
  497.   .SETFONT 3 'Y X'
  498.  
  499. A good way to find in RTF how to describe the font you are interested in,
  500. is to open a new document in your word processor, write a line in the
  501. font you are interested, save the document as a RTF document, and see the
  502. way the word processor described the font in the RTF font table.
  503.  
  504. Text Attributes :
  505.  
  506. Use the .TITLEDEFAULTS statement to set the default text attributes of the
  507. topics titles in the help database. These defaults can be over-ridden with
  508. the .TITLEATTR statement in the topic definition. Please refer to the Text
  509. Attributes section below for discussion of paragraph text attributes.
  510.  
  511. Use the .ATTRDEFAULTS statement to set the default text attributes of 
  512. paragraph text in the database. Please refer to the Text Attributes section 
  513. below.
  514.  
  515. Error Handling :
  516.  
  517. Use the .ERRORLEVEL command to set the error level. The syntax is .ERRORLEVEL x
  518. where x is one of the following :
  519.  
  520.   0    No Check  - (Default) - No action is taken.
  521.   1    Trap      - The link is replaced to a special topic named ERROR.
  522.   2    Strip     - The link is replaced by the Text part only.
  523.   3    Delete    - The text and link parts are deleted.
  524.   9    Abort     - helpC will abort with an error message, indicating the 
  525.                    line number.
  526. Please refer to the Exception Handling section below about helpC error
  527. processing.
  528.  
  529. Alias Topics :
  530.  
  531. Use the .ALIAS command to substitute a PopUp/Topic name with another name. The
  532. syntax is .ALIAS newname origname. Whenever a newname link is found, the alias
  533. of origname is used. This can be very useful when you want to give multiple
  534. names to a topic, or when HLPDK source is the target of an incremental 
  535. compiler.
  536.  
  537. Use the .CONTENTS command to change the initial (Overview) screen displayed by
  538. the Help Engines. By Default this screen is called OVERVIEW.
  539.  
  540. Graphic Support :
  541.  
  542. Use the .GRAPHIC statement to define a graphic object, that can be referenced
  543. elsewhere in your document. 
  544. The syntax is :
  545.  
  546.   .GRAPHIC graphic-name path-to-graphic-file
  547.  
  548. Please refer to the Graphics section below, for further information.
  549.  
  550. External Links :
  551.  
  552. Use the .EXTLINK command to define links in external database file. With this 
  553. command you can create multiple file target database projects. Please refer to
  554. the Links section below for more information about this feature.
  555.  
  556. Sound Support :
  557.  
  558. Use the .SOUND command statement to define a sound object, that can be used as
  559. a Sound link elsewhere in your document. The syntax is :
  560.  
  561.   .SOUND sound-name sound-file-name
  562.  
  563. Please refer to the Sound section below for more information about this feature.
  564.  
  565. Application Launch :
  566.  
  567. The .APPLICATION statement is used to define an application object that can be
  568. launched by an application-launch-link. The syntax is :
  569.  
  570.   .APPLICATION application-identifier application-definition
  571.  
  572. Where application-identifier is the identifier that will be used in 
  573. application-launch-links, and application-definition is the path to the
  574. application. If the application needs to get parameters, the path and the
  575. parameters are specified in quotes. Please refer to the Application Launch
  576. section below for additional information.
  577.  
  578. External Routines Support :
  579.  
  580. The .ROUTINE statement can be used to define external routines that can be 
  581. called from the help database. The syntax is :
  582.  
  583.   .ROUTINE routine-name module-name parameter-definition
  584.  
  585. Where routine-name is the name of the procedure/function to be called, 
  586. module-name is the name of the library/DLL that the routine resides in (No need
  587. to add the .DLL extension), and parameter-definition is the definition of the
  588. parameters that the routine receives.
  589. The parameter definitions is a string with one character describing each
  590. parameters type. The following definitions are used :
  591.  
  592. char    C definition               Pascal definition
  593.  
  594.   u       unsigned short (WORD)      Word
  595.   U    unsigned long  (DWORD)     Longint
  596.   i    short int                  byte
  597.   I    int                        integer
  598.   s    near char * (PSTR)         PChar
  599.   S    far char * (LPSTR)         PChar
  600.   v    void 
  601.  
  602. Embedding Files :
  603.  
  604. Use the .EMBEDD statement to add files to your help database. The files defined
  605. as embedded will appear in the [baggage] section of your winHelp/MMViewer 
  606. project definition and will be stored with the rest of the database.
  607.  
  608. The syntax is :
  609.  
  610.   .EMBEDD file-id path-to-file
  611.  
  612. Where file-id is the name the file will be referenced by, and path-to-file is
  613. the path to the file on the author's machine.
  614.  
  615. Distributed Hypertext Databases :
  616.  
  617. Use the .ROOTNODE and .ROOTPATH statements to define the root node address,
  618. and the root path address of the hypertext database, when compiling to a
  619. distributed hypertext database format. (e.g. WWW).
  620.  
  621. The syntax is :
  622.  
  623.   .ROOTPATH root-path-string
  624.   .ROOTNODE root-node-address
  625.  
  626. *******************************************************************************
  627. *                                    Links                                    *
  628. *******************************************************************************
  629.  
  630. Links are the special "commands" embedded in a topic text, that provide
  631. special functionality in the target database.
  632.  
  633. All links are described in the topic text as a combination of text that will
  634. appear, and a link identifier.
  635.  
  636. The syntax, in a topic text for a link is :
  637.  
  638.   .. Some Standard Text .. ~Link Text~Link Id~ .. some more text ..
  639.  
  640. Link Id is a unique identifier that describe this link.
  641.  
  642. The most common link, is a topic link, this link allows the user to click on
  643. the Link Text, that is usually in a different color than the rest of the text,
  644. and by clicking on this text, the topic in the help engine window is replaced,
  645. with the topic that has the same identifier as the Link Id specified in the
  646. identifier.
  647. (A Topic is defined by a .topic statement somewhere else in the source file).
  648.  
  649. Another type of link, is the PopUp link. When the Link Id is the Id of a PopUp,
  650. clicking on the link will display the PopUp text in a window, and retain the 
  651. original topic in the help engine window (A PopUp is defined by a .POPUP 
  652. statement somewhere else in the source file).
  653.  
  654. Links can be used, to embed non-textual information in the topic text. A 
  655. common non-textual is a graphic link, when the Link Id is the Id of a graphic
  656. object (defined by a .graphic statement somewhere else in our source), the
  657. place of the link will be replaced by a graphic picture, in targets that 
  658. support graphics (such as winHelp and OS/2 IPF), and remain the Link Text
  659. in targets that do not support graphics.
  660.  
  661. Another non-textual link is a sound link. A sound link plays a sound file 
  662. when a sound object (defined with the .SOUND statement) is clicked by the user. 
  663.  
  664. Applications can be launched from a link, when the link key is the identifier of
  665. an application defined with the .APPLICATION statement.
  666.  
  667. Other links can be created using "User Defined Link Templates", with this 
  668. feature a link template can be created to support additional code translations.
  669. Please refer to the Extending HDF section below for additional information
  670. on User defined links.
  671.  
  672. When helpC recognizes a link, the following sequence of link recognition 
  673. occurs :
  674.  
  675.   1. Try to match link with a graphic object.
  676.   2. If failed - try to match link with a sound object.
  677.   3. If failed - try to match link with an application object.
  678.   4. If failed - try to match link with a user defined link.
  679.   5. If failed - try to match link with a PopUp.
  680.   6. If failed - try to match link with a topic.
  681.   7. If failed - try to match link with an external topic. (.EXTLINK)
  682.   8. If failed - operate according to the current error-level.
  683.  
  684.  
  685. *******************************************************************************
  686. *                             Conditional Defines                             *
  687. *******************************************************************************
  688.  
  689. The helpC compiler supports conditional define directives that allow you to
  690. tailor your source according to define symbols that are known to the compiler.
  691.  
  692. You can use the .ifdef, .ifndef, .else and .endif directives to test the
  693. target of your compile and do different things according to this target.
  694.  
  695. If for example you have a Windows bitmap you want to include in your generated
  696. RTF file, when you compile to winHelp format, but, you would like to use a
  697. statement in other targets that do not support graphics, you could do the 
  698. following :
  699.  
  700.   .ifdef windows
  701.     some text {\bmc mybmp.bmp\} some more text
  702.   .else 
  703.     some text AND STATEMENT HERE some more text
  704.   .endif
  705.  
  706. When the compiler will generate the code, the RTF command \bmc will be 
  707. inserted in the output of the compiler for windows targets (/W30, /W31), 
  708. and a simple text statement will be inserted otherwise.
  709.  
  710. The conditional directives supported are :
  711.  
  712.   .ifdef  SYMBOL - Compile code only if SYMBOL is defined.
  713.   .ifndef SYMBOL - Compile code only if SYMBOL is NOT defined.
  714.   .endif         - Any .ifdef/.ifndef should be terminated by a .endif .
  715.   .else          - Reverse the previous .ifdef/.ifndef
  716.  
  717. The following SYMBOLS are automatically defined by the compiler :
  718.  
  719.   Symbol          When Defined
  720.   ------          ------------
  721.   DEF             /PX+
  722.   W31             /W31
  723.   W30             /W30
  724.   THS             /TH+
  725.   QHS             /QH+
  726.   TVH             /TV+
  727.   PHS             /PH+
  728.   DVX             /XD+
  729.   MEM             /MT+
  730.   OS2             /OS2
  731.   TXT             /TXT
  732.   WINDOWS         /W30, /W31
  733.   THELP           /TH+
  734.   QUICKHELP       /QH+
  735.   TVHC            /TV+
  736.   NATIVEPARADOX   /PX+
  737.   POPHELP         /PH+
  738.   DESQVIEW/X      /XD+
  739.   NATIVEMEMORY    /MT+
  740.   VERx.y          When Compiling with helpC Vx.y 
  741.   NATIVE          /PX+, /MT+
  742.   DOCUMENT        /TXT, /RTF
  743.   RTFBASED        /W+, /RTF, /W30, /W31, /MMV
  744.   PRP             /PP+
  745.   PREPROCESS      /PP+
  746.   MMV             /MMV
  747.   MMVIEWER        /MMV
  748.   VIEWER          /MMV
  749.   WWW             /WWW
  750.   HTML            /WWW
  751.  
  752. You can define your own conditional defines on the command line using the /D:
  753. switch of helpC.
  754.  
  755. e.g.
  756.  
  757. Source :
  758.  
  759.   ... some text ..
  760.   .ifdef mydef
  761.     Special Text for mydef situation
  762.   .endif
  763.   ... more text
  764.  
  765. and you compile using HELPC /D:MYDEF the special text will be included.
  766.  
  767. *******************************************************************************
  768. *                                   Groups                                    *
  769. *******************************************************************************
  770.  
  771. Topics can be associated to groups using the .GROUPS statement in the topic
  772. heading. Menus to these groups can later be created by using the command 
  773. .INSERT GROUP group-name in the topic text.
  774.  
  775. An example will clarify the use of this function :
  776.  
  777. Let us assume that we have a car's collectors database, where the description
  778. of each car is a topic. We would like to present a hierarchy to the user that
  779. looks like that : 
  780.  
  781. Overview Screen
  782.    |
  783.    +--------- Cars by Country
  784.    |               |
  785.    |               +------------ U.S.A ... List of cars manufactured in U.S.A
  786.    |               +------------ U.K.
  787.    |               +------------ Italy
  788.    |
  789.    +--------- Cars by Maker
  790.    |               |
  791.    |               +------------ Alfa-Romeo ... List of Alfa-Romeo models
  792.    |               +------------ GM
  793.    |               +------------ Mazda
  794.    |
  795.    +--------- Cars by type
  796.                    |
  797.                    +------------ 4x4 & Jeeps
  798.                    +------------ Sport Cars
  799.                    +------------ Family Sedans
  800.                         
  801. We will create group references in the topics using the .GROUPS statement,
  802. The Alfa Romeo Spider 2000 topic will look like :
  803.  
  804.   .topic alfa_romeo_spider_2000
  805.   .title Alfa Romeo Spider 2000
  806.   .keywords alfa spider convertible sport classic
  807.   .groups Italian alfa sport
  808.  
  809.   The Alfa Romeo ... 
  810.  
  811.  
  812.   .end-topic
  813.  
  814. The Italian Cars Directory topic will be :
  815.  
  816.   .topic Italy_directory
  817.   .title Italian Cars Directory
  818.   .keywords directory
  819.  
  820.   Cars Manufactured in Italy :
  821.  
  822.   .insert group Italian
  823.  
  824.   .end-topic
  825.  
  826. If our database includes three cars that have a reference to the Italian group
  827. this will be the equivalent of writing :
  828.  
  829.   .topic Italy_directory
  830.   .title Italian Cars Directory
  831.   .keywords directory
  832.  
  833.   Cars Manufactured in Italy :
  834.  
  835.   ~Alfa Romeo Spider 2000~alfa_romeo_spider_2000~
  836.   ~Ferrari 308 GTS~Ferrari_308_gts~
  837.   ~Fiat Uno 70S~fiat_uno_70s~
  838.  
  839.   .end-topic
  840.  
  841. *******************************************************************************
  842. *                               Text Attributes                               *
  843. *******************************************************************************
  844.  
  845. Topic's text can receive visual attributes such as a font, size, bold, 
  846. italic etc.. by using the paragraph attributes on the .PARAGRAPH (.par)
  847. line. Text attributes are currently supported in the MMViewer, winHelp and RTF 
  848. targets. Some attributes are also supported in HTML (WWW) and IPF targets.
  849.  
  850. The attributes that can be applied to text are :
  851.  
  852.   Font            - The font the text will be displayed in.
  853.   Bold            - The text is displayed in bold characters.
  854.   Italic          - The text is displayed in italic characters.
  855.   Underline       - The text is displayed in underline characters.
  856.   Size            - The size of the font.
  857.   Box             - The paragraph can be contained in a box.
  858.   Align           - The paragraph can be aligned.
  859.   Color           - The text foreground color.
  860.  
  861. The syntax is :
  862.  
  863.   .PARAGRAPH [attr1 attr1-parameters [attr2 attr2-parameters [..] ]]
  864.  
  865. The allowed parameters to attributes are :
  866.  
  867.  1. FONT font-number-in-font-palette : The font number in the font palette, 
  868.     there is a standard font palette for MMViewer, winHelp and RTF targets that 
  869.     include the following fonts :
  870.  
  871.       0 : Times Roman        (roman Tms Rmn)
  872.       1 : Symbol             (decor Symbol)
  873.        2 : Helvetica          (swiss Helv)
  874.       3 : LinePrinter        (modern LinePrinter)
  875.       4 : Terminal           (roman Terminal)
  876.       5 : Times New Roman    (roman Times New Roman)
  877.       6 : Arial              (swiss Arial)
  878.       7 : CG Times (WN)      (roman CG Times (WN))
  879.       8 : Courier            (modern Courier)
  880.       9 : Modern             (modern Modern)
  881.      10 : Script             (script Script)
  882.      11 : Univers (WN)       (swiss Univers (WN))
  883.      12 : Wingdings          (nil Wingdings)
  884.      13 : MS Sans Serif      (swiss MS Sans Serif)
  885.  
  886.  2. BOLD ON|OFF - Set bold mode to on/off.
  887.  
  888.  3. ITALIC ON|OFF - Set italic mode to on/off.
  889.  
  890.  4. UNDERLINE ON|OFF - Set underline mode on/off.
  891.  
  892.  5. SIZE font-size - Set the size of the font.
  893.  
  894.  6. BOX NONE|NORMAL|THICK|SHADOW|DOUBLE - Print paragraph in a box which has one
  895.     of the described borders : NONE is no border at all.
  896.  
  897.  7. ALIGN LEFT|RIGHT|CENTER|JUSTIFY - Print the text in the paragraph aligned
  898.     to one of the sides, the center or justified in the paragraph.
  899.  
  900.  8. COLOR color-number-in-color-palette - The numbers are the same numbers used
  901.     for DOS native systems and described in the help definition format section
  902.     above, regarding the .LINKCOLOR, .TEXTCOLOR and .LINKHIGH statements.
  903.  
  904. Example :
  905.  
  906.   .PAR BOX SHADOW FONT 13 BOLD ON
  907.      ... some text here ..
  908.   .ENDPAR
  909.  
  910. Will display the paragraph in a shadow bordered box, using font 13 in the 
  911. palette (MS Sans Serif assuming that the original palette is used) with bold
  912. characters.
  913.  
  914. *******************************************************************************
  915. *                             Exception Handling                              *
  916. *******************************************************************************
  917.  
  918. helpC provides mechanism to handle link exceptions. An exception is a link
  919. to an identifier that is not defined as a Topic or PopUp. In order to help
  920. you find these errors helpC contains the cross reference report that can
  921. be produced using the /R+ switch. You can browse the HELPC.LST file generated
  922. by helpC if a cross reference report is generated, and search for the string
  923. ERROR that describes undefined links.
  924.  
  925. helpC provides additional exception handling facilities. When an error is found
  926. during compile helpC can perform on of the following actions :
  927.  
  928.   0: No Check - Default - helpC does not do anything. The link is passed as is 
  929.               to the target. The target help engine/compiler will handle the 
  930.               exception as it is implemented.
  931.  
  932.   1: Trap     - helpC will replace the link key with the key ERROR. It is the 
  933.               responsibility of the help database author to provide such a
  934.               Topic/PopUp.
  935.  
  936.   2: Strip    - helpC will pass the text of the link to the target with no link
  937.               support. The text will appear as normal text.
  938.  
  939.   3: Delete   - Both the text and the link will be deleted and will not appear 
  940.               in the target.
  941.  
  942.   9: Abort    - helpC will abort, with an error message, indicating the line the 
  943.               link is defined. This mode is recommended when you are debugging 
  944.               your help database.
  945.  
  946. You can set the error level using the following techniques :
  947.  
  948.   - Use the /EL=x switch on the helpC command line.
  949.  
  950.   - Use the .ERRORLEVEL x .HDF statement.
  951.  
  952. Important Points :
  953.  
  954.  1. When ERRORLEVEL = 0 (default) no topic database is created during pass 1,
  955.     if you set .ERRORLEVEL somewhere in your source, after some Topics/PopUps
  956.     have been defined, these topics will not be in the symbol table created by
  957.     helpC and will be considered an exception !
  958.  
  959.  2. You can use the /FC+ switch to "Force Collection" of Topics data, even when
  960.     the ERRORLEVEL is 0.
  961.  
  962. *******************************************************************************
  963. *                                  Graphics                                   *
  964. *******************************************************************************
  965.  
  966. Native Graphic support is provided by graphic "links", and graphic object
  967. definitions.
  968.  
  969. In order to incorporate graphics into your database, use the .GRAPHIC
  970. command to define a graphic object. This command associates a graphic file
  971. with a unique identifier.
  972.  
  973. Whenever you want to use the graphic image in one of your topics, you have to
  974. define a link with the following syntax :
  975.  
  976.   ~Link Text in non-graphic targets~graphic-identifier~
  977.  
  978. If the target of the compiler has no helpC native graphic support, the 
  979. "Link Text in non-graphic targets" sentence will be used, if the target 
  980. is supported, the graphic-identifier will be displayed.
  981.  
  982. In this version of HLPDK native graphics support is provided for winHelp,
  983. Microsoft Multimedia Viewer (MMViewer), WWW and OS/2 IPF Bitmaps.
  984.  
  985. Notice that the graphic-identifier must be unique, and must not be identical
  986. to a topic/PopUp/sound name. Please refer to the Links section for
  987. link recognition sequence information.
  988.  
  989. Link Modifiers are attributes that are defined after the link name, separated
  990. with the ";" character.
  991.  
  992. The following modifiers are defined for Graphic support :
  993.  
  994.   Left   : Align the graphic object to the left of the window.
  995.   Right  : Align the graphic object to the right of the window.
  996.   Center : Align the graphic object to the center of the window.
  997.  
  998. Please refer to one of the standard documentation examples that are supplied
  999. with the HLPDK package, for demos of graphic use.
  1000.  
  1001. *******************************************************************************
  1002. *                                    Sound                                    *
  1003. *******************************************************************************
  1004.  
  1005. Sound support is provided by sound "links", and sound object definition.
  1006.  
  1007. In order to incorporate sound into your database, use the .SOUND command
  1008. to define a sound object. This command associates a sound file (WAV in windows)
  1009. with a unique identifier.
  1010.  
  1011. Whenever you want to use the sound object in one of your topics, you have to
  1012. define a link with the following syntax :
  1013.  
  1014.   ~Text To Be Clicked On~sound-identifier~
  1015.  
  1016. Currently, Sound support is available only in the MMViewer and winHelp targets.
  1017. The name of the sound object in this version should be a WAV file, that 
  1018. is in the \WINDOWS directory. The WINDOWS MMSYSTEM multi-media support looks
  1019. for the sound file in this directory!.
  1020.  
  1021. *******************************************************************************
  1022. *                             Application Launch                              *
  1023. *******************************************************************************
  1024.  
  1025. Applications can be launched from the help database using application launch 
  1026. links, and application definitions.
  1027.  
  1028. An application has to be defined using the .APPLICATION statement that uses the
  1029. following syntax :
  1030.  
  1031.   .APPLICATION application-id 'application-activation-code'
  1032.  
  1033. Where application-id is the identifier to the application that will be used 
  1034. in application launch links, and the application-activation-code is the 
  1035. [optional] path to the application and the application executable. If 
  1036. parameters should be specified, the application-activation-code should be
  1037. surrounded by quotes, with a space separating the path to the application from
  1038. the parameters.
  1039.  
  1040. When you want to include an application launch in the topic text, the 
  1041. application-id should be used as the key of a link.
  1042. e.g. ~Press Here To Run XXX.EXE~application-id~
  1043.  
  1044. *******************************************************************************
  1045. *                              Complex Projects                               *
  1046. *******************************************************************************
  1047.  
  1048. helpC supports multiple file target databases, with the use of the following
  1049. HDF statements : .EXTLINK, and .EXPORT .
  1050.  
  1051. When a link that exists in an external database is needed, the .EXTLINK 
  1052. statement is used to define the properties and attributes of that link.
  1053.  
  1054. The most important property - is the database name, that defines which 
  1055. database should be called. Other attributes include the title, keywords,
  1056. numeric references and groups this external topic should be associated with.
  1057.  
  1058. If we have a "simple" complex project, with only 2 databases, and links 
  1059. between them, we might not find it difficult to define the "public" links
  1060. of database 1 in database 2, and vice versa, but - if the project involves
  1061. more databases, we might find it hard to create these public references to
  1062. all external database, in each database. We can, however, define .EXTLINK
  1063. statements of the public links of each database, in a separate file, and
  1064. use the .INCLUDE statement to include them, in the other statements.
  1065.  
  1066. helpC can be used, with the /PP+ switch, to create these "reference" export
  1067. files, with the name of database.EXP when we use the following command :
  1068. HELPC /PP+ database-name
  1069. If we want a .EXTLINK statement to be created for a topic, we have to
  1070. add the .EXPORT attribute to the topic definition. An alternative is to use
  1071. the /EA+ switch of the helpC compiler, that exports all topics in the database,
  1072. in a PreProcess target compile (/PP+).
  1073.  
  1074. The .EXTLINK statement has the following syntax :
  1075.  
  1076.   .EXTLINK database 'topic-identifier'
  1077.   [.TITLE topic-title]
  1078.   [.REFERENCE topic-numeric-reference]
  1079.   [.KEYWORDS keyword [keyword ..] ]
  1080.   [.GROUPS group [group ..] ]
  1081.   .END-EXTLINK
  1082.  
  1083. Where database is the name of the external database that the link is in,
  1084. topic-identifier is the id of the link in the external database, title, 
  1085. keywords and groups have the same meaning as in the .TOPIC definition, and
  1086. the topic-numeric-reference is a numeric reference associated with the 
  1087. topic, in the external database, if this is needed.
  1088.  
  1089. *******************************************************************************
  1090. *                                Extending HDF                                *
  1091. *******************************************************************************
  1092.  
  1093. The HDF syntax can be extended by creating "User Defined Link Templates", 
  1094. with these templates special links can be created, that can be used to support
  1095. additional link types.
  1096.  
  1097. In order to create a user link template, use the following statement :
  1098.  
  1099.   .USERLINK userlink-id template
  1100.  
  1101. Where userlink-id is the name of the template, and template defines the way
  1102. the link will be translated.
  1103.  
  1104. The template can include the following substitution characters :
  1105.  
  1106.   %%            - Replace with a %
  1107.   %t            - Replace with the text of the link
  1108.   %k            - Replace with the key of the link
  1109.   %1, %2, .. %5 - Replace with parameter #x
  1110.   %o            - Replace with target (output) database name.
  1111.   %c            - Replace with context-id (topic name) of current topic.
  1112.   %n            - Replace with a carriage-return and newline characters.
  1113.   %r1, %r2, ..  - Replace with the resolution number of the topic-id in 
  1114.                   parameter x. This is needed for links in IPF (OS/2) and
  1115.                   PopHelp targets.
  1116.   %g1, %g2, ..  - Replace with the graphic object whose id is in parameter x.
  1117.   %s1, %s2, ..  - Replace with the sound object whose id is in parameter x.
  1118.   %a1, %a2, ..  - Replace with the application object, whose id is in parm x.
  1119.   %e1, %e2, ..  - Replace with the embedded object, whose name is in parm x. 
  1120.                   Notice, that only the file name and extension are returned,
  1121.                   while in the %gx, %sx and %ax, the entire path is returned.
  1122.  
  1123. User links can be used in the topic text with the following syntax :
  1124.  
  1125.   .. some text ~link-text~userlink-id(param1 param2 ..)~ .. more text
  1126.  
  1127. Use this command to extend the HDF syntax. You can even create special 
  1128. libraries to support video/animation etc.. from the help databases, with these
  1129. extensions.
  1130.  
  1131. e.g. - To create a link to a topic, with a graphic bitmap, we could define
  1132. the following User Link : (Example for winHelp/MMViewer)
  1133.  
  1134.   .userlink graphicJump '{\uldb \{bmc %g1\} %t}{\v %2}'
  1135.  
  1136. And assuming we defined a graphic object as 
  1137.  
  1138.   .graphic mypicture ronp.bmp
  1139.  
  1140. We could create a graphic links such as :
  1141.  
  1142.   Click ~Ron Loewy~graphicJump(mypicture ronTopic)~ to know about the author.
  1143.  
  1144. In the target RTF this will be translated to :
  1145.  
  1146.   Click {\uldb \{bmc ronp.bmp\} Ron Loewy}{\v ronTopic} to know about the author.
  1147.  
  1148. HLPDK includes a standard system extension library, that uses userlink 
  1149. templates to support in-paragraph text attributes, extended grtaphic, video,
  1150. CDAudio, animation and other multimedia items. Please refer to the HDKLIB.DOC
  1151. file for additional information.
  1152.  
  1153.  
  1154. *******************************************************************************
  1155. *                         Native Databases Structure                          *
  1156. *******************************************************************************
  1157.  
  1158. Each help database is built of 5 components : 
  1159.  
  1160.  1. Help Data File    - this file contains the raw text data.
  1161.  2. Topic Index       - a database table that contains the topic names, and
  1162.                         the references to the topics in the Data File.
  1163.  3. Links Index       - a database table that contains the list of links 
  1164.                         defined for each topic, and positional data.
  1165.  4. Keywords Index    - a database table that contains the list of keywords,
  1166.                         and the topics that have these keywords.
  1167.  5. Set Data File     - a database configuration file that contains the
  1168.                         names of the 3 components defined above, and some 
  1169.                         additional information.
  1170.  
  1171. Version 1.x is the bare-bones version that includes only the basic
  1172. operations needed from a hyper-text database, this version is implemented
  1173. using the Paradox Engine V3.0 to manage the Topic and Link index tables.
  1174.  
  1175. Version 2.x has a new field in the topic table - the title field, help
  1176. databases that were compiled with V1.x will not be executed by version
  1177. 2.x, they will have to be re-compiled!.
  1178.  
  1179. Version 3.x fields have different length - the databases have to be 
  1180. re-compiled.
  1181.  
  1182. Version 5.0+ has a new entry in the help set file, database have to be
  1183. re-compiled, or the value 128 should be added in the last line of the help
  1184. set file, and the version number should be changed to 5.0.
  1185.  
  1186. Version 6.0+ has added the keyword support - a new database table is added,
  1187. and a new set format is defined. Help databases will have to be re-compiled
  1188. for Native targets.
  1189.  
  1190. In Version 7.0 the title field has been expanded once more - to 70 
  1191. characters. Help databases will have to be re-compiled.
  1192.  
  1193. In Version 8.0 the TTYPE field was added to the Topics database. Old databases
  1194. will have to be re-compiled.
  1195.  
  1196. The format of the help database is released to the public domain, if
  1197. you implement a database viewer on this database structure, I would be
  1198. happy to receive a copy ...
  1199.  
  1200.  
  1201. *******************************************************************************
  1202. *                             Topic Index Format                              *
  1203. *******************************************************************************
  1204.  
  1205. The topic index table format is as follows :
  1206.  
  1207.   TOPIC     - 40 characters string key - this is the topic "name".
  1208.   FILENAME  - 38 characters string field - includes the name of the
  1209.               help raw data file. (Notice - V1.0 ignores the value of this 
  1210.               field, it is here for future expansion).
  1211.   START     - longint (long) field that contains the offset from the data file
  1212.               start, to the start of the topics text data, in bytes.
  1213.   LEN       - longint (long) field that contains the length (in bytes) of the 
  1214.               text data of the topic.
  1215.   TITLE     - 70 characters string key - the title of the topic.
  1216.   TTYPE     - 1 character - topic type. Currently supported types are :
  1217.               'T' = Topic.
  1218.               'P' = PopUp.
  1219.  
  1220. *******************************************************************************
  1221. *                             Links Index Format                              *
  1222. *******************************************************************************
  1223.  
  1224. The links index table format is as follows :
  1225.  
  1226.   TOPIC     - 40 characters string key - the name of the topic that 
  1227.               has the link.
  1228.   SEQ       - integer (int) key - contains the sequential number of 
  1229.               the link in the topic. (This way you can assign the links
  1230.               order in the topic).
  1231.   LINK      - 40 characters string key - the name of the link topic to
  1232.               display if the link is chosen.
  1233.   LINE      - integer (int) field - the line (from the start of the topic) 
  1234.               this link is displayed on.
  1235.   COL       - integer (int) field - the column this link is displayed on.
  1236.   TXT       - 70 characters string field - the text to display on the line.
  1237.  
  1238. *******************************************************************************
  1239. *                            Keywords Index Table                             *
  1240. *******************************************************************************
  1241.  
  1242. The keywords index table format is as follows :
  1243.  
  1244.   KEYWORD   - 40 characters string key - the keyword.
  1245.   TOPIC     - 40 characters string key - the topic name that this keyword is 
  1246.               assigned to.
  1247.  
  1248. Notice: The database will include a row for each keyword, that has the 
  1249.         TOPIC field blank. This is used to display the first list of keywords, 
  1250.         that if chosen, will display the 2nd list of topics that have the chosen 
  1251.         keyword    in their .KEYWORDS definition.
  1252.  
  1253. *******************************************************************************
  1254. *                               Set File Format                               *
  1255. *******************************************************************************
  1256.  
  1257. The set file is a text file that contains one entry in each line, using
  1258. the following format :
  1259.  
  1260.   help-database-engine
  1261.   version-of-generating-compiler
  1262.   topic-index-table name
  1263.   links-index-table name
  1264.   keyword-index-table-name
  1265.   help-raw-data-file name
  1266.   number-of-topics
  1267.   length-of-file
  1268.   link-normal-color
  1269.   link-high-color
  1270.   text-normal-color
  1271.   contents-topic-name
  1272.  
  1273. The help-database-engine values available today are DEF=Paradox and 
  1274. MEM=memory Tables.
  1275.  
  1276. *******************************************************************************
  1277. *                               Implementation                                *
  1278. *******************************************************************************
  1279.  
  1280. Notice: The Paradox tables (Topic, Links) include one additional field
  1281.          (wtGeneration) for future expansion purpose only.
  1282.  
  1283. *******************************************************************************
  1284. *                                Distribution                                 *
  1285. *******************************************************************************
  1286.  
  1287. To distribute a database of your creation, compile the help definition
  1288. file, and include the HELPENG.EXE file with the .DB, .PX files, and the
  1289. .HDT file created by the compiler. 
  1290.  
  1291. If you use the Native Mem Format, compile using the /MT+ switch, and
  1292. distribute HE.EXE with the .SET, .HDT and .HDX files created.
  1293.  
  1294. If you generated the Windows (/W30, /W31) help file, you can compile the 
  1295. .HPJ and .RTF generated file, and distribute the resulting .HLP .
  1296.  
  1297. If you generate QH, THELP, PopHelp or TVHC use these packages compilers to
  1298. compile you sources into native binary codes. (helpMake, HL, makeHelp and TVHC)
  1299.  
  1300. To Generate Help databases for DESQview/X, use the MDVXHELP compiler
  1301. that can be found on the Internet in the file DVXHLP10.ZIP.
  1302.  
  1303. Distribute the .INF files that IPFC creates from the .IPF sources generated,
  1304. if you compile to OS/2.
  1305.  
  1306. For examples on these compiler's command lines please refer to the quick
  1307. start section of HLPDK.DOC, or to your compiler's documentation.
  1308.