home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / ol_doc.zip / ol_doc.dh
Text File  |  1999-11-25  |  71KB  |  951 lines

  1. ;----------------------------------------------------------------------------
  2. ;     MODULE NAME:   OL_DOC.DH
  3. ;
  4. ;         $Author:   Dennis_Bareis  $
  5. ;       $Revision:   1.14  $
  6. ;           $Date:   25 Nov 1999 17:57:24  $
  7. ;        $Logfile:   E:/DB/PVCS.IT/OS2/PPWIZARD/OL_DOC.DHV  $
  8. ;
  9. ;      DOCUMENTED:   In PPWIZARD manual.
  10. ;                    ~~~~~~~~~~~~~~~~~~~
  11. ;
  12. ;     DESCRIPTION:   This is a header file for handling generic input files
  13. ;                    and generating INF or HTML files.
  14. ;
  15. ;                    The user can #undef and re-#define any of the definitions
  16. ;                    created here to get different backgrounds etc.
  17. ;
  18. ;                    The user can of course define their own macros and should
  19. ;                    also definately have a look at the #AsIs command and its
  20. ;                    examples.  Unless you wish to disable IPF generation etc
  21. ;                    you should code your macros very carefully to work with
  22. ;                    all document types.
  23. ;
  24. ;
  25. ;           INPUT:   You must have set up the "DocType" variable to be "HTML"
  26. ;                    or "IPF" prior to including this header.  It is
  27. ;                    recommended that the "/define" switch be used to keep
  28. ;                    your source input independant from the generated type.
  29. ;
  30. ;
  31. ;            NOTE:   Both the IPF and HTML version of PPWIZARD's documentation
  32. ;                    use this header to generate the manuals.
  33. ;
  34. ;                    When I get time I will document this header file and the
  35. ;                    macros etc.  In the mean time please see the example in
  36. ;                    manual, or email me for help.  I could send you the
  37. ;                    source for PPWIZARD's manual.
  38. ;----------------------------------------------------------------------------
  39. ;#define OL_DOC_TRY_JAVA_NAVIGATION         ;;Not happy with current state of java applet/JVMs
  40.  
  41. ;--- Define the version number of this header file --------------------------
  42. #define   VERSION_OL_DOC_OH    99.327
  43. #require  99.325
  44.  
  45.  
  46. ;--- This Header only support HTML & IPF ------------------------------------
  47. #if    '<$DocType>' <> 'HTML' & '<$DocType>' <> 'IPF'
  48.        #error  'OL_DOC.OH: The document type "<$DocType>" is unsupported in version <$VERSION_OL_DOC_OH>'
  49. #endif
  50.  
  51. ;--- Warnings generated by this header file ---------------------------------
  52. #define WARNINGID_INVALID_HEADING_REF 'HIDR'
  53. #define WARNINGID_IPF_ONLY            'IPFO'
  54. #define WARNING_NOW_IPF_ONLY                                                          \
  55.         #warning <$WARNINGID_IPF_ONLY> "A tag that is currently only supported by IPF was used"
  56.  
  57. ;--- Define some aliases for characters we need to be careful with ----------
  58. #define PlaySafe                    ;;Sometimes need to be careful about what starts a line (example read in "#if" - we don't want to execute!)
  59. #if    ['<$DocType>' = 'HTML']
  60.        ;--- HTML ------------------------------------------------------------
  61.        #RexxVar  "LT"   =x= "<"               ;;'<' Char
  62.        #RexxVar  "GT"   =x= ">"               ;;'>' Char
  63.        #RexxVar  "AMP"  =x= "&"              ;;'&' Char
  64.        #RexxVar  "COL"  =x= ":"                  ;;':' Char
  65. #elseif
  66.        ;--- IFP -------------------------------------------------------------
  67.        #RexxVar  "LT"   =x= "<"                  ;;'<' Char
  68.        #RexxVar  "GT"   =x= ">"                  ;;'>' Char
  69.        #RexxVar  "AMP"  =x= "&."              ;;'&' Char
  70.        #RexxVar  "COL"  =x= "&colon."            ;;':' Char
  71. #endif
  72. #RexxVar         "HASH"      =x= "#"                  ;;'#' Char
  73. #RexxVar         "SEMICOLON" =x= ";"                  ;;';' Char
  74.  
  75. ;--- Set up AsIs Mode -------------------------------------------------------
  76. #AutoTagState +
  77.    ;--- Define characters that should be automatically modified -------------
  78.    #AutoTag  "<"   "<?xLT>"
  79.    #AutoTag  ">"   "<?xGT>"
  80.    #AutoTag  "&"   "<?xAMP>"
  81.    #AutoTag  ":"   "<?xCOL>"
  82.    #AutoTag  "#"   "<?xHASH>"
  83.  
  84.    ;--- "PROGRAM" ASIS mode (save as "ASIS_OL_DOC") -------------------------
  85.    #AsIs  SETUP    ASIS_OL_DOC
  86. #AutoTagState -
  87.  
  88. ;--- Generating IPF or HTML (or whatever)? ----------------------------------
  89. #if    ['<$DocType>' = 'HTML']
  90.        ;--- Determine what extension to use for generated files -------------
  91.        #define   HtmlExtension   htm        ;;For now hardcode
  92.  
  93.        ;--- Generating HTML -------------------------------------------------
  94.        #ifndef OL_DOC_HTML_BODY
  95.            #define OL_DOC_HTML_BODY <BODY>        ;;User did not provide alternative BODY tag
  96.        #endif
  97.        #ifndef OL_DOC_HTML_GENERATOR_TAGS              ;;Empty to not generate anything!
  98.                #define OL_DOC_HTML_GENERATOR_TAGS <META NAME="GENERATOR" CONTENT="FREE PPWIZARD v<?Version> using 'OL_DOC.DH' v<$VERSION_OL_DOC_OH> (<?PpwizardHomePage>)"><?NewLine>
  99.        #endif
  100.        #ifndef OL_DOC_HTML_META_TAGS
  101.                #define OL_DOC_HTML_META_TAGS
  102.        #endif
  103.        #define   HeadingCodes    <HTML><HEAD>                               %\
  104.                                  <TITLE>{$Text}</TITLE>                     %\
  105.                                  #ifndef OL_DOC_HTML_ALLOW_ROBOTS           -\
  106.                                     <META name="robots" content="NOINDEX">  %\
  107.                                  #endif                                     -\
  108.                                  <$OL_DOC_HTML_GENERATOR_TAGS>              %\
  109.                                  <$OL_DOC_HTML_META_TAGS>                   %\
  110.                                  </HEAD>                                    %\
  111.                                  <$OL_DOC_HTML_BODY>
  112.        #define   TrailingCodes   </BODY></HTML>
  113.        #define   Colon           :
  114.        #define   Amp             &
  115.        #define   LT              <
  116.        #define   GT              >
  117.        #define   NoBreakingBlank  
  118.  
  119.        ;--- Whitespace Macros -----------------------------------------------
  120.        #define   P               <?NewLine><?NewLine><P>
  121.        #define   BR              <?NewLine><BR>
  122.  
  123.        ;--- Different text colors and effects -------------------------------
  124.        #define   Red             <FONT COLOR=RED>{$Text}</FONT>
  125.        #define   DarkGreen       <FONT COLOR=GREEN>{$Text}</FONT>
  126.        #define   Magenta         <FONT COLOR=MAGENTA>{$Text}</FONT>
  127.        #define   Bold            <B>{$Text}</B>
  128.        #define   Italic          <I>{$Text}</I>
  129.        #define   BoldUnderline   <B><U>{$Text}</U></B>
  130.        #define   BoldItalic      <$Bold Text=<$Italic Text={$Text}>>
  131.  
  132.        ;--- Work out what extension to use (.htm, .HTM, .html etc) ----------
  133.        #evaluate ""  ^parse value _filespec('name', '<?OutputFile>') with .'.'HtmlExtn^
  134. #elseif
  135.        ;---------------------------------------------------------------------
  136.        ;--- Generating IPF  -------------------------------------------------
  137.        ;---------------------------------------------------------------------
  138.        #define   HeadingCodes    :userdoc.<?NewLine>:Title.{$Text}<?NewLine>:docprof toc=123456.
  139.        #define   TrailingCodes   :euserdoc.
  140.        #define   Colon           &colon.
  141.        #define   Amp             &.
  142.        #define   NoBreakingBlank &rbl.
  143.        #define   LT              <?xLT>
  144.        #define   GT              <?xGT>
  145.  
  146.        ;--- What characters are invalid in IPF IDs --------------------------
  147.        #RexxVar  InvalidIdChars  = " `~!@%^&-+=',.\|"    ;;Must include SPACE!
  148.  
  149.        ;--- Whitespace Macros -----------------------------------------------
  150.        #define   P               :p.
  151.        #define   BR              .BR<?NewLine>           ;;Must be used at start of line, text immediately follows.
  152.  
  153.        ;--- Different text colors and effects -------------------------------
  154.        #define   Red             :hp8.{$Text}:ehp8.
  155.        #define   DarkGreen       :color fc=darkgreen.{$Text}:color fc=default.
  156.        #define   Magenta         :hp9.{$Text}:ehp9.
  157.        #define   Bold            :hp2.{$Text}:ehp2.
  158.        #define   Italic          :hp1.{$Text}:ehp1.
  159.        #define   BoldUnderline   :hp7.{$Text}:ehp7.
  160.        #define   BoldItalic      :hp3.{$Text}:ehp3.
  161. #endif
  162. #define   Para                   <$P>                  ;;Set up alias which user may prefer to use
  163.  
  164.  
  165.  
  166. ;----------------------------------------------------------------------------
  167. ;--- Generates a valid ID for a heading section -----------------------------
  168. ;----------------------------------------------------------------------------
  169. #if    ['<$DocType>' = 'HTML']
  170.        #evaluate ''   ^call GetIdPrepare 'OL_DOC'^     ;;Prepare for generating headings
  171.        #ifndef   OL_DOC_HTML_8_3_NAMES
  172.                  ;--- Long filenames for HTML OK ----------------------------
  173.                  #define   RexxGenerateValidId       \
  174.                            RxValidId = EnsureFileHasCorrectCase( GetId('OL_DOC', '2_',       translate(ExpandXCodes('{$Id $$SQx2}'))) )
  175.        #elseif
  176.                  ;--- Want 8.3 filenames for HTML ---------------------------
  177.                  #define   RexxGenerateValidId       \
  178.                            RxValidId = EnsureFileHasCorrectCase( GetId('OL_DOC', 'MAXCHARS', translate(ExpandXCodes('{$Id $$SQx2}'))) )
  179.        #endif
  180. #elseif
  181.        ;--- IPF ID's don't need to look pretty as no one sees them ----------
  182.        #define   RexxGenerateValidId                 \
  183.                  RxValidId = translate(translate(ExpandXCodes('{$Id $$SQx2}')),, InvalidIdChars, '_')
  184. #endif
  185.  
  186.  
  187.  
  188. ;----------------------------------------------------------------------------
  189. ;--- The following provide some validations of headings against references --
  190. ;----------------------------------------------------------------------------
  191. #DefineRexx RexxRememberHeading    ;;Remember heading ID (should only be called once for each ID!)
  192.         HeadIdFlag = '!RxHeadId_' || c2x(RxValidId);
  193.         if symbol(HeadIdFlag) = 'VAR' then
  194.            Error('Duplicated Heading ID, first used at ' || _valueG(HeadIdFlag))
  195.         call _valueS HeadIdFlag, CurrentSourceLocation();
  196. #DefineRexx
  197. #DefineRexx HeadingIdReference     ;;Someone wants to link to a heading, remember this
  198.             RxHeadingRefCnt = RxHeadingRefCnt + 1;
  199.             RxHeadingRefID.RxHeadingRefCnt  = RxValidId;
  200.             RxHeadingRefLOC.RxHeadingRefCnt = CurrentSourceLocation();
  201. #DefineRexx
  202. #DefineRexx RexxValidateHeadingReferences  ;;At EOF we need to check references against headings
  203.             RefErrCnt = 0;
  204.             do HeadIndex = 1 to RxHeadingRefCnt
  205.                HeadIdFlag = '!RxHeadId_' || c2x(RxHeadingRefID.HeadIndex);
  206.                if  symbol(HeadIdFlag) <> 'VAR' then
  207.                do
  208.                    RefErrCnt = RefErrCnt + 1;
  209.                    #option PUSH AllowPack=NO
  210.                    call Warning <$WARNINGID_INVALID_HEADING_REF>, 'Unknown ID of "' || RxHeadingRefID.HeadIndex || '" used at ' || RxHeadingRefLOC.HeadIndex;
  211.                    #option POP
  212.                end;
  213.             end;
  214.             if RefErrCnt <> 0 then
  215.                call Summary 'Inv References', RefErrCnt || ' (missing headings?)';
  216. #DefineRexx
  217. #OnExit    <$ValidateHeadingReferences>
  218. #define    ValidateHeadingReferences                        \
  219.            #evaluate ^^ ^<$RexxValidateHeadingReferences>^
  220.  
  221.  
  222.  
  223.  
  224. ;----------------------------------------------------------------------------
  225. ;--- MAIN DOCUMENT Start/End Macros -----------------------------------------
  226. ;----------------------------------------------------------------------------
  227. #evaluate '' ^parse value _filespec("name", "<?OutputFile>") with ContentsId'.'.^
  228. #if    ['<$DocType>' = 'HTML']
  229.        #evaluate '' ^RxValidId=ContentsId; <$RexxRememberHeading>^   ;;Remember contents ID
  230. #endif
  231. #RexxVar RexxHeadingIdLastUsed = ''         ;;Initialize values
  232. #RexxVar HtmlNextId            = ''
  233. #RexxVar HtmlPrevId1           = ContentsId
  234. #RexxVar HtmlPrevId2           = ''
  235. #RexxVar HtmlPagesGenerated    = 1          ;;Count contents page!
  236. #ifndef OL_DOC_HTML_CONTENTS_TITLE
  237.         #define    OL_DOC_HTML_CONTENTS_TITLE   Contents
  238. #endif
  239. #define   DocumentStart                                                 \
  240.           #ifdef _DocumentStart_                                       -\
  241.                  #error "OL_DOC: Only allowed to start document once!" -\
  242.           #endif                                                       -\
  243.           #define  _DocumentStart_                                     -\
  244.           #Rexxvar RxHeadingLevel  = 1                                 -\
  245.           #Rexxvar RxHeadingRefCnt = 0                                 -\
  246.           #if  ['<$DocType>' = 'IPF']                                  -\
  247.                <$HeadingCodes TEXT={$Text='No Title'}><?NewLine>     -\
  248.           #endif
  249. #define   DocumentEnd                                                   \
  250.           #if  ['<$DocType>' = 'HTML']                                 -\
  251.                #RexxVar RexxHeadingIdLastUsed = '' ;;Not in heading    -\
  252.                #if  [<?OutputLevel> <> 1]                              -\
  253.                     #RexxVar HtmlNextId = ''                           -\
  254.                     <$_HeadingEndHtml>   ;;Finish off previous heading -\
  255.                #endif                                                  -\
  256.                <$_GenerateContentsHtml>       ;;Output contents        -\
  257.           #endif                                                       -\
  258.           #if  ['<$DocType>' = 'IPF']                                  -\
  259.                <$TrailingCodes>        ;;Output trailing HTML codes    -\
  260.           #endif                                                       -\
  261.           #eof  {$EndIf=""}            ;;Thats All Folks
  262.  
  263.  
  264.  
  265. ;----------------------------------------------------------------------------
  266. ;--- HEADINGS ---------------------------------------------------------------
  267. ;----------------------------------------------------------------------------
  268. #if    ['<$DocType>' = 'HTML']
  269.        ;--- HTML version ----------------------------------------------------
  270.        #OnExit <$DisplayPagesInSummary>
  271.        #define DisplayPagesInSummary                                      \
  272.                #evaluate ^^ ^call Summary 'Generated', HtmlPagesGenerated || ' HTML Pages'^
  273.        #define Target           <A NAME="{$NAME}">
  274.        #define Heading                                                    \
  275.                ;--- Count pages ---------------------------------------  -\
  276.                #RexxVar  HtmlPagesGenerated + 1                          -\
  277.                                                                          -\
  278.                ;--- Generate ID save heading info ---------------------  -\
  279.                #evaluate ^^ ^<$RexxGenerateValidId ID={$ID={$Text}}>;<$RexxRememberHeading>^ -\
  280.                #RexxVar RexxHeadingLastUsed    =  "{$Text}"              -\
  281.                #RexxVar RexxHeadingIdLastUsed  =  RxValidId              -\
  282.                                                                          -\
  283.                ;--- Previous heading complete -------------------------  -\
  284.                #if  [<?OutputLevel> <> 1]                                -\
  285.                      #RexxVar HtmlNextId = RxValidId                     -\
  286.                     <$_HeadingEndHtml>                                   -\
  287.                #endif                                                    -\
  288.                                                                          -\
  289.                ;--- Wrap PREV heading IDs -----------------------------  -\
  290.                #RexxVar HtmlPrevId2 =  HtmlPrevId1                       -\
  291.                #RexxVar HtmlPrevId1 =  RexxHeadingIdLastUsed             -\
  292.                                                                          -\
  293.                ;--- Update Contents List ------------------------------  -\
  294.                                                                          -\
  295.                ;--- Start New HTML file for new section ---------------  -\
  296.                #output  "<??RxValidId>"                                  -\
  297.                <$HeadingCodes TEXT={$Text}>                            -\
  298.                                                                          -\
  299.                ;--- Label the top of the file -------------------------  -\
  300.                <A NAME="TOP"></A>                                        -\
  301.                                                                          -\
  302.                ;--- Generate start HTML buttons -----------------------  -\
  303.                <$_GenerateStartOfHtmlButtons>                            -\
  304.                                                                          -\
  305.                ;--- Generate TITLE unless user said not to ------------  -\
  306.                #ifndef OL_DOC_HEADINGS_DONT_GENERATE_TITLE               -\
  307.                        <CENTER><H1>{$Text}</H1></CENTER>                 -\
  308.                #endif                                                    -\
  309.                <$_AddToContents ID=■{$ID={$Text}}■ TEXT={$Text}>
  310.        #define _HeadingEndHtml                                                 \
  311.                #if [<?OutputLevel> <> 1]                                      -\
  312.                    <A NAME="BOTTOM"></A>                                      -\
  313.                    <$_GenerateEndOfHtmlButtons>                               -\
  314.                #endif                                                         -\
  315.                <$TrailingCodes>               ;;Output trailing HTML codes    -\
  316.                #if [<?OutputLevel> <> 1]                                      -\
  317.                    #output                    ;;Close off generated HTML file -\
  318.                #endif
  319.        #define _GenerateStartOfHtmlButtons                                     \
  320.                <CENTER>                                                       -\
  321.                #ifdef  OL_DOC_HTML_NOCONTENTS_HEADER                          -\
  322.                        <$OL_DOC_HTML_NOCONTENTS_HEADER>                       -\
  323.                #endif                                                         -\
  324.                <TABLE BORDER=3 CELLSPACING=3 CELLPADDING=3>                   -\
  325.                <TR>                                                           -\
  326.                    <TD><$OL_DOC_HTML_BOTTOM>                                  -\
  327.                    <TD><$OL_DOC_HTML_CONTENTS>                                -\
  328.                        <$OL_DOC_HTML_SEARCH>                                  -\
  329.                    #if [HtmlPrevId2 <> '']                                    -\
  330.                        <TD><$OL_DOC_HTML_PREV Page="<??HtmlPrevId2>">         -\
  331.                    #endif                                                     -\
  332.                    <$OL_DOC_HTML_HOME>                                        -\
  333.                    <SCRIPT>                                                   %\
  334.                    <!---                                                      %\
  335.                    document.write('<TD><$OL_DOC_HTML_NEXT Page="" LINKGUTS=^HREF="next" onClick="NextClicked(this)"^>')  %\
  336.                    //-->                                                      %\
  337.                    </SCRIPT>                                                  -\
  338.                </TR>                                                          -\
  339.                </TABLE></CENTER>                                              -\
  340.                <HR>
  341.        #define _GenerateEndOfHtmlButtons                                       \
  342.                <P><HR>                                                        -\
  343.                <CENTER>                                                       -\
  344.                <TABLE BORDER=3 CELLSPACING=3 CELLPADDING=3>                   -\
  345.                <TR>                                                           -\
  346.                    <TD><$OL_DOC_HTML_TOP>                                     -\
  347.                    <TD><$OL_DOC_HTML_CONTENTS>                                -\
  348.                        <$OL_DOC_HTML_SEARCH>                                  -\
  349.                    #if [HtmlPrevId2 <> '']                                    -\
  350.                        <TD><$OL_DOC_HTML_PREV Page="<??HtmlPrevId2>">         -\
  351.                    #endif                                                     -\
  352.                    #if [HtmlNextId <> '']                                     -\
  353.                        <TD><$OL_DOC_HTML_NEXT Page="<??HtmlNextId>">          -\
  354.                    #endif                                                     -\
  355.                    <$OL_DOC_HTML_HOME>                                        -\
  356.                </TR></TABLE>                                                  -\
  357.                <SCRIPT>                                                       %\
  358.                <!---                                                          %\
  359.                function NextClicked(TheLink)                                  %\
  360.                {                                                              %\
  361.                    #if [HtmlNextId <> '']                                     -\
  362.                        TheLink.href = "<??HtmlNextId>.<??HtmlExtn>"           %\
  363.                    #elseif                                                    -\
  364.                        TheLink.href = "<??ContentsId>.<??HtmlExtn>"           %\
  365.                    #endif                                                     -\
  366.                    return(false);                                             %\
  367.                }                                                              %\
  368.                //-->                                                          %\
  369.                </SCRIPT>                                                      -\
  370.                <NOSCRIPT><P><FONT SIZE=-1 COLOR=RED>JavaScript Unavailable</FONT></NOSCRIPT> -\
  371.                </CENTER>                                                      -\
  372.                #ifdef  OL_DOC_HTML_FOOTER                                     -\
  373.                        <$OL_DOC_HTML_FOOTER CONTENTS='N'>                     -\
  374.                #endif
  375.  
  376. #elseif
  377.        ;--- IPF version -----------------------------------------------------
  378.        #define Target                          ;;No support for targets!
  379.        #define Heading                                                    \
  380.                ;--- Generate ID save heading info ---------------------  -\
  381.                #evaluate ^^ ^<$RexxGenerateValidId ID={$ID={$Text}}>;<$RexxRememberHeading>^ -\
  382.                #RexxVar RexxHeadingLastUsed    =  "{$Text}"              -\
  383.                #RexxVar RexxHeadingIdLastUsed  =  RxValidId              -\
  384.                                                                          -\
  385.                ;--- Generate the heading ------------------------------  -\
  386.                :h<??RxHeadingLevel> id=<??RxValidId>.{$Text}             -\
  387.                                                                          -\
  388.                ;--- Generate TITLE unless user said not to ------------  -\
  389.                #ifndef OL_DOC_HEADINGS_DONT_GENERATE_TITLE               -\
  390.                        <$Title TEXT={$Text}>                           -\
  391.                #endif
  392. #endif
  393. #define   HeadingAt                                         \
  394.           #Rexxvar RxHeadingLevel  =  "{$Level}"            \
  395.           <$ValidateRxHeadingLevel>
  396. #define   HeadingUp                                         \
  397.           #Rexxvar RxHeadingLevel  - 1                      \
  398.           <$ValidateRxHeadingLevel>
  399. #define   HeadingDown                                       \
  400.           #Rexxvar RxHeadingLevel  + 1                      \
  401.           <$ValidateRxHeadingLevel>
  402. #define   HeadingSave                                       \
  403.           #Rexxvar RxHLvl_{$NAME=""} = RxHeadingLevel
  404. #define   HeadingRestore                                    \
  405.           #Rexxvar RxHeadingLevel    = RxHLvl_{$NAME=""}
  406. #define   ValidateRxHeadingLevel                                                     \
  407.           ;--- Validate the heading level --------------------------                 \
  408.           #if [RxHeadingLevel < 1]                                                   \
  409.               #Error "Heading level of <??RxHeadingLevel> is invalid (must be 1-6)." \
  410.           #endif                                                                     \
  411.           #if [RxHeadingLevel > 6]                                                   \
  412.               #Error "Heading level of <??RxHeadingLevel> is invalid (must be 1-6)." \
  413.           #endif
  414.  
  415.  
  416.  
  417. ;----------------------------------------------------------------------------
  418. ;--- LINKS ------------------------------------------------------------------
  419. ;----------------------------------------------------------------------------
  420. #if    ['<$DocType>' = 'HTML']
  421.        ;--- HTML version ----------------------------------------------------
  422.        #define   LinkTo                                                     \
  423.                  #evaluate ^^ ^<$RexxGenerateValidId ID={$ID={$Text}}>;<$HeadingIdReference>^ -\
  424.                  #if ['{$Target=''}' = '']                                 -\
  425.                      ;--- No TARGET -----------------                      -\
  426.                      #if [RexxHeadingIdLastUsed = RxValidId]               -\
  427.                          <$PlaySafe>{$Text}                                -\
  428.                      #elseif                                               -\
  429.                          <A HREF="<??RxValidId>.<$HtmlExtension>">{$Text}</A> -\
  430.                      #endif                                                -\
  431.                  #elseif                                                   -\
  432.                      #if [RexxHeadingIdLastUsed = RxValidId]               -\
  433.                          <A HREF="#{$Target}>">{$Text}</A>                 -\
  434.                      #elseif                                               -\
  435.                          <A HREF="<??RxValidId>.<$HtmlExtension>#{$Target}">{$Text}</A> -\
  436.                      #endif                                                -\
  437.                  #endif
  438. #elseif
  439.        ;--- IPF version -----------------------------------------------------
  440.        #define   LinkTo                                                    \
  441.                  #evaluate ^^ ^<$RexxGenerateValidId ID={$ID={$Text}}>;<$HeadingIdReference>^ -\
  442.                  #if [RexxHeadingIdLastUsed = RxValidId]                  -\
  443.                      <$PlaySafe>{$Text}                                   -\
  444.                  #elseif                                                  -\
  445.                      :link reftype=hd refid=<??RxValidId>.{$Text}:elink.  -\
  446.                  #endif
  447. #endif
  448. #define LinkToRoutine <$LinkTo Id='{$Text}' Text='{$Text}()'>
  449.  
  450.  
  451. ;----------------------------------------------------------------------------
  452. ;--- INDEX ------------------------------------------------------------------
  453. ;----------------------------------------------------------------------------
  454. #if    ['<$DocType>' = 'IPF']
  455.        ;--- IPF -------------------------------------------------------------
  456.        #define Index1                                                             \
  457.                #evaluate ^^ ^<$RexxGenerateValidId ID={$ID={$Text=¡<??RexxHeadingLastUsed>¡}}>^ -\
  458.                #RexxVar RexxLastIndex1Id = RxValidId                             -\
  459.                :i1 id=<??RxValidId>.{$Text=¡<??RexxHeadingLastUsed>¡}
  460.        #define Index2                                                             \
  461.                #evaluate ^^ ^<$RexxGenerateValidId ID={$Index1=<??RexxLastIndex1Id>}>^  -\
  462.                :i2 refid=<??RxValidId>.{$Text=¡<??RexxHeadingLastUsed>¡}
  463. #endif
  464. #if    ['<$DocType>' = 'HTML']
  465.        ;--- HTML ------------------------------------------------------------
  466.        #define Index1 <$WARNING_NOW_IPF_ONLY>
  467.        #define Index2 <$WARNING_NOW_IPF_ONLY>
  468. #endif
  469.  
  470.  
  471.  
  472.  
  473. ;----------------------------------------------------------------------------
  474. ;--- TITLE (Big Text in Highlight Color) ------------------------------------
  475. ;----------------------------------------------------------------------------
  476. #if    ['<$DocType>' = 'IPF']
  477.        ;--- IPF -------------------------------------------------------------
  478.        #define Title                                                     \
  479.                :p.:color fc={$Color="neutral"}.                         -\
  480.                :font facename={$Font="Helv size=24x24."}:hp7.           -\
  481.                {$Text=¡<??RexxHeadingLastUsed>¡}                        -\
  482.                :color fc=default.                                       -\
  483.                :font facename=default size=0x0.:ehp7.
  484. #endif
  485. #if    ['<$DocType>' = 'HTML']
  486.        ;--- HTML ------------------------------------------------------------
  487.        #define Title                                                     \
  488.                <H1><CENTER>{$Text=¡<??RexxHeadingLastUsed>¡}</CENTER></H1>
  489. #endif
  490.  
  491.  
  492.  
  493. ;----------------------------------------------------------------------------
  494. ;--- LISTS ------------------------------------------------------------------
  495. ;----------------------------------------------------------------------------
  496. #if    ['<$DocType>' = 'IPF']
  497.        ;--- IPF -------------------------------------------------------------
  498.        #define  li                    :li.                          ;;List Item
  499.        #define  OrdList               :lm Margin=5.:ol.             ;;Start Numbered List
  500.        #define eOrdList               :eol.:lm Margin=1.            ;;End   Numbered List
  501.        #define  OrdListCompact        :lm Margin=5.:ol compact.     ;;Start Numbered List - Compact
  502.        #define eOrdListCompact        :eol.:lm Margin=1.            ;;End   Numbered List - Compact
  503.        #define  UnNumberedList        :lm Margin=5.:ul.             ;;Start Unnumbered List
  504.        #define eUnNumberedList        :eul.:lm Margin=1.            ;;End   Unnumbered List
  505.        #define  UnNumberedListCompact :lm Margin=5.:ul compact.     ;;Start Unnumbered List - Compact
  506.        #define eUnNumberedListCompact :eul.:lm Margin=1.            ;;End   Unnumbered List - Compact
  507.        #define  SimpleList            :lm Margin=5.:sl.             ;;Start Simple List
  508.        #define eSimpleList            :esl.:lm Margin=1.            ;;End   Simple List
  509.        #define  SimpleListCompact     :lm Margin=5.:sl compact.     ;;Start Simple List - Compact
  510.        #define eSimpleListCompact     :esl.:lm Margin=1.            ;;End   Simple List - Compact
  511. #endif
  512. #if    ['<$DocType>' = 'HTML']
  513.        ;--- HTML ------------------------------------------------------------
  514.        #define  li                    <??HtmlLi>       ;;Set up at list definition time
  515.        #define  OrdList               <P><OL><$StartList Separator="<P>">
  516.        #define eOrdList               </OL><$EndList>
  517.        #define  OrdListCompact        <P><OL><$StartList>
  518.        #define eOrdListCompact        </OL><$EndList>
  519.        #define  SimpleList            <P><OL><$StartList Separator="<P>"  LI="">
  520.        #define eSimpleList            </OL><$EndList>
  521.        #define  SimpleListCompact     <P><OL><$StartList Separator="<BR>" LI="">
  522.        #define eSimpleListCompact     </OL><$EndList>
  523.        #define  UnNumberedList        <P><UL><$StartList Separator="<P>">
  524.        #define eUnNumberedList        </UL><$EndList>
  525.        #define  UnNumberedListCompact <P><UL><$StartList>
  526.        #define eUnNumberedListCompact </UL><$EndList>
  527.  
  528.        ;--- The following helps implement HTML lists ------------------------
  529.        #RexxVar "HtmlLiCnt" = ^0^          ;;No values saved yet
  530.        #RexxVar "HtmlLi"    = ^^           ;;Make sure variable exists
  531.        #define  StartList                                                \
  532.                 ;--- Add previous value to stack ---------------------  -\
  533.                 #RexxVar "HtmlLiCnt" + 1                                -\
  534.                 #RexxVar "HtmlLiStack.HtmlLiCnt" = ^<??HtmlLi>^         -\
  535.                                                                         -\
  536.                 ;--- Set the new value -------------------------------  -\
  537.                 #RexxVar "HtmlLi"  = ^{$Separator=""}{$LI="<LI>"}^
  538.        #define  EndList                                                  \
  539.                 ;--- Restore previous value from stack ---------------  -\
  540.                 #if  [HtmlLiCnt <= 0]                                   -\
  541.                      #error "Found end of list - we are not in one!"    -\
  542.                 #endif                                                  -\
  543.                 #RexxVar "HtmlLi"    = HtmlLiStack.HtmlLiCnt            -\
  544.                 #RexxVar "HtmlLiCnt" - 1
  545. #endif
  546.  
  547.  
  548. ;----------------------------------------------------------------------------
  549. ;--- References to Internet HTML pages --------------------------------------
  550. ;----------------------------------------------------------------------------
  551. #if    ['<$DocType>' = 'IPF']
  552.        ;--- IPF -------------------------------------------------------------
  553.        #define HtmlPage        <$DarkGreen Text=^http<$colon>//{$Page}^>
  554. #elseif
  555.        ;--- HTML ------------------------------------------------------------
  556.        #ifndef OL_DOC_HTML_TARGET
  557.               #define HtmlPage <A HREF="http://{$Page}">http://{$Page}</A>
  558.        #elseif
  559.               #define HtmlPage <A HREF="http://{$Page}" TARGET="<$OL_DOC_HTML_TARGET>">http://{$Page}</A>
  560.        #endif
  561. #endif
  562.  
  563. ;----------------------------------------------------------------------------
  564. ;--- References to Internet Newsgroups --------------------------------------
  565. ;----------------------------------------------------------------------------
  566. #if    ['<$DocType>' = 'IPF']
  567.        #define NewsGroup        <$DarkGreen Text=^{$Group}^>          ;;IPF
  568. #elseif
  569.        #define NewsGroup        <A HREF="news:{$Group}">{$Group}</A>  ;;HTML
  570. #endif
  571.  
  572. ;----------------------------------------------------------------------------
  573. ;--- References to EMAIL ADDRESSES ------------------------------------------
  574. ;----------------------------------------------------------------------------
  575. #if    ['<$DocType>' = 'IPF']
  576.        #define EmailAddress        <$DarkGreen Text=^{$Email}^>            ;;IPF
  577.        #define EmailAddressSubject <$DarkGreen Text=^{$Email}^>
  578. #elseif
  579.        #define EmailAddress        <A HREF="mailto:{$Email}">{$Email}</A>  ;;HTML
  580.        #define EmailAddressSubject <A HREF="mailto:{$Email}?subject={$Subject}">{$Email}</A>
  581. #endif
  582.  
  583.  
  584.  
  585. ;----------------------------------------------------------------------------
  586. ;--- EXAMPLE (DO ALL YOUR OWN TAGGING - special symbols like colons as well)-
  587. ;----------------------------------------------------------------------------
  588. #if    ['<$DocType>' = 'IPF']
  589.        ;--- IPF -------------------------------------------------------------
  590.        #ifndef  PRE_COLOR_IPF
  591.                 #define PRE_COLOR_IPF       darkred
  592.        #endif
  593.        #define ExampleFormatted                                               \
  594.                :xmp.                                    ;;Start Example      -\
  595.                :color fc=<$PRE_COLOR_IPF>.                                   -\
  596.                :font facename='Courier' size=8x8.       ;;Small Mono Font
  597.        #define eExampleFormatted                                              \
  598.                :font facename=default size=0x0.         ;;Restore Font       -\
  599.                :color fc=default.                                            -\
  600.                :exmp.                                   ;;End of Example
  601. #endif
  602. #if    ['<$DocType>' = 'HTML']
  603.        #ifndef  PRE_COLOR_HTML
  604.                 ;--- Orange is default - looks good against black text and on white background ---
  605.                 #define PRE_COLOR_HTML       #FF6600
  606.        #endif
  607.        #ifndef  PRE_STYLE_OTHER_HTML
  608.                 ;--- Default style is to scale font down a bit --------------
  609.                 #define PRE_STYLE_OTHER_HTML ;font-size:80%
  610.        #endif
  611.        ;--- HTML ------------------------------------------------------------
  612.        #define ExampleFormatted                                                                              \
  613.                <FONT COLOR=<$PRE_COLOR_HTML>>                               ;;Set up font (older browsers)  -\
  614.                <PRE STYLE="color:<$PRE_COLOR_HTML><$PRE_STYLE_OTHER_HTML>"> ;;Start Example
  615.        #define eExampleFormatted                                                                             \
  616.                </PRE>                                                       ;;End of Example                -\
  617.                </FONT>                                                      ;;Restore Font (older browsers)
  618. #endif
  619.  
  620. ;----------------------------------------------------------------------------
  621. ;--- ALLOW SPELL CHECKING IN EXAMPLES? --------------------------------------
  622. ;----------------------------------------------------------------------------
  623. #ifndef PRE_SPELL_CHECKING
  624.         #define PRE_SPELL_CHECKING OFF
  625. #endif
  626.  
  627.  
  628. ;----------------------------------------------------------------------------
  629. ;--- EXAMPLE (NO TAGGING - EXCEPT AUTOTAGGING ALLOWED) ----------------------
  630. ;----------------------------------------------------------------------------
  631. #define Example                                                            \
  632.         <$ExampleFormatted>                                               -\
  633.         #AutoTagState  +     {$STATE=''}      ;;User can set up own tags  -\
  634.         #option        PUSH AllowSpell={$SPELL="<$PRE_SPELL_CHECKING>"} ExtraIndent=^copies(' ', {$Indent='4'})^ -\
  635.         #option        PUSH replace=OFF                                   -\
  636.         #AutoTag       '<?xLT>$eExample<?xGT>'  '<$eExample>'   #1        -\
  637.         #option        POP                 ;;Restore REPLACE mode         -\
  638.         #AutoTag       ON                                                 -\
  639.         #AsIs          ON ASIS_OL_DOC {$ASIS=''}
  640. #define eExample                                                           \
  641.         #AsIs          OFF                                                -\
  642.         #option        POP                                                -\
  643.         #AutoTagState  -                                                  -\
  644.         <$eExampleFormatted>
  645.  
  646.  
  647.  
  648.  
  649.  
  650. ;----------------------------------------------------------------------------
  651. ;--- EXAMPLE FILE INCLUSION -------------------------------------------------
  652. ;----------------------------------------------------------------------------
  653. #define ExampleFile                                                        \
  654.         <$ExampleFormatted>                                               -\
  655.         #AutoTagState  +     {$STATE=''}      ;;User can set up own tags  -\
  656.         #option        PUSH AllowSpell={$SPELL="<$PRE_SPELL_CHECKING>"} ExtraIndent=^copies(' ', {$Indent='4'})^ -\
  657.         #AutoTag       ON                                                 -\
  658.         #AsIs          ON ASIS_OL_DOC {$ASIS=''}                          -\
  659.         #include       "{$File}" "{$Fragment=''}"                         -\
  660.         #AsIs          OFF                                                -\
  661.         #option        POP                                                -\
  662.         #AutoTagState  -                                                  -\
  663.         <$eExampleFormatted>
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670. ;----------------------------------------------------------------------------
  671. ;--- Define LINKS between HTML pages ----------------------------------------
  672. ;----------------------------------------------------------------------------
  673. #if    ['<$DocType>' = 'HTML']
  674.        ;--- Define macro to rebuild files from binary representation --------
  675.        #define RebuildFile                                                                                                                                     \
  676.                #if ['{$KeepCase='N'}' = 'N']                                                                                                                  -\
  677.                    #evaluate ""  ^NewFile = EnsureFileHasCorrectCase(_filespec('drive', '<?OutputFile>') || _filespec('path', '<?OutputFile>') || '{$FILE}')^ -\
  678.                #elseif                                                                                                                                        -\
  679.                    #evaluate ""  ^NewFile = _filespec('drive', '<?OutputFile>') || _filespec('path', '<?OutputFile>') || '{$FILE}'^                           -\
  680.                #endif                                                                                                                                         -\
  681.                #DependsOn OUTPUT "<??NewFile>"                                                                                                                -\
  682.                #evaluate ""  ^CloseRc = stream(NewFile, 'c', 'close');^                                                                                       -\
  683.                #if stream(NewFile, 'c', 'query exists') <> ''                                                                                                 -\
  684.                    #evaluate ""  ^DelRc = _SysFileDelete(NewFile)^                                                                                            -\
  685.                    #if  stream(NewFile, 'c', 'query exists') <> ''                                                                                            -\
  686.                         #evaluate ""  ^CloseRc = stream(NewFile, 'c', 'close');^                                                                              -\
  687.                         #error ^Could not delete "<??NewFile>" (is it in use?)^                                                                               -\
  688.                    #endif                                                                                                                                     -\
  689.                #endif                                                                                                                                         -\
  690.                #evaluate ""  ^WriteRc = charout(NewFile, NewFileData)^                                                                                        -\
  691.                #evaluate ""  ^CloseRc = stream(NewFile, 'c', 'close');^                                                                                       -\
  692.                #if  [WriteRc <> 0]                                                                                                                            -\
  693.                     #error ^Could not write to "<??NewFile>"^                                                                                                 -\
  694.                #endif
  695.  
  696.        ;--- Allow user to define OPTIONAL buttons ---------------------------
  697.        #ifndef OL_DOC_HTML_SEARCH
  698.                #define    OL_DOC_HTML_SEARCH                                 ;;Do nothing
  699.        #elseif
  700.                #evaluate+ OL_DOC_HTML_SEARCH   ^'<TD><$OL_DOC_HTML_SEARCH>'^ ;;Want in own table cell
  701.        #endif
  702.        #ifndef OL_DOC_HTML_HOME
  703.                #define   OL_DOC_HTML_HOME                                    ;;Do nothing
  704.        #elseif
  705.                #evaluate OL_DOC_HTML_HOME     ^'<TD><$OL_DOC_HTML_HOME>'^    ;;Want in own table cell
  706.        #endif
  707.  
  708.        ;--- Defile "PREV" details -------------------------------------------
  709.        #ifndef OL_DOC_HTML_PREV
  710.                ;--- Define the link -----------------------------------------
  711.                #define OL_DOC_HTML_PREV   <A HREF="{$Page}.<??HtmlExtn>"><IMG SRC="prev.gif" BORDER=0 WIDTH=49 HEIGHT=31 ALT="[Prev]"></A>
  712.  
  713.                ;--- Create the graphic --------------------------------------
  714.                #DefineRexx ""
  715.                            NewFileData =                "47494638396132002600B3000000262600525200989801B8B800EDED78E0E0C8D8D878979768F8F800000000000000000000000000000000000000000021FF0B4E45545343415045322E300301000000"x
  716.                            NewFileData = NewFileData || "21F90409030008002C00000900310016000004EA10C949D1A938EBCD650917671C64699E66470D01106686D002746DDF81A17A8240EB99426F482C0E03821DC230E8B55E9498714ACC2985434020D3A4"x
  717.                            NewFileData = NewFileData || "5241D7220D83F51AC1BB721650919ACF40D10129CE19EECC773100C2C7A3327C7C37845A823385895A074031488F3238877C3281939798828C0605040304A0A082000203A6A7A1A0A7ABACADA7050513"x
  718.                            NewFileData = NewFileData || "06A1A79601ADAA9FAEAD02049DBF7FB2A07B5A7EB39E7A595022C3445A6DCDC92DC11BC7CE5B159D5DC9C54AB35D4F19D1DCCBCC4DE118D6C991E51B9D81D41EC8EBD3DE0432F112C7BBBB324A4B03DA"x
  719.                #DefineRexx
  720.                #DefineRexx ""
  721.                            NewFileData = NewFileData || "458145B0A04183F960FC5B8821020021F90409030008002C00000A00300015000004E310C949A5A938EBCD9109D7668C6469965D7500E07604702CCF0170A4D35BDF994EFF319C4710030042940FCCC8"x
  722.                            NewFileData = NewFileData || "6C3A59B0C3A1804C1288CB63C520101006E0B0784C1E542D846B514B3978BFE5B898BA2DA4BF6BD5E00E9793096706057B7760355032846984608B8C8C7449768A7D03015D985D858C858E8B91758502"x
  723.                            NewFileData = NewFileData || "63017E44A3A503A7AA862D22775845A96278403F2C6718766A32465593B6B7AEAFBC873C13067BB1C145B91806B5C6BAD1CC32387658BE19C0D545C7AF9646011AD0AADDDE29D058CE12937E6501DF1A"x
  724.                            NewFileData = NewFileData || "E6EC1383EF6502F51602F219270003EEB320A4A086080021F90409030008002C00000A00300012000004CD10C9398DA138EBCD350957871845699E681A6AC507760621CC746DDBC78AC5EEBB1184C16D"x
  725.                #DefineRexx
  726.                #DefineRexx ""
  727.                            NewFileData = NewFileData || "88EB008581A46ED23A0E9ED0A87470E8349F820000B0E405055041F0391E7C0B30E7530BA85680E56F1C3A5E5248E428DB2D8163E57F7442761278535801374E62426173038423523789445900899897"x
  728.                            NewFileData = NewFileData || "99493E1A86585BA29A436CA3A7A37C1C0561A801072788A8B35B9E1B86A6A2AA064297B4B391148DB96D180560BEBFA73930A1B5B612C74859D489D6D5D4C1926C5991C796E002681C035AB0E31BBDE1"x
  729.                            NewFileData = NewFileData || "44CC9FED22F0F0110021F90409030008002C00000800310016000004FE10C94991A938EBCD65395D2872C600805C11AC6CEBBA575798409C95C2ABC361390480C06636281A8FC841CEB6F11501B50C51"x
  730.                            NewFileData = NewFileData || "691414ADD72A4A76046E274EAA121BB8620502D1F41AC44C03567476BE0C15B0D536C529FF99FF75246348390107878747677F833F414C7B07396893703B94402B41409B9B9A5F7B68963950A53B96A5"x
  731.                #DefineRexx
  732.                #DefineRexx ""
  733.                            NewFileData = NewFileData || "A9AAA68790123EA2A4A994B495A72E9E8637050493AA563333044A96B7B7AE16339C4150150604C385C6A707C8CF2B564090BC49DDDE0405C860C345DACED03F71657E83027A2308DC3F4218CFC4E564"x
  734.                            NewFileData = NewFileData || "F84A27F012D1BA52A22D6A44260ABC6BA0F6A0F34668453F040402887B55A0A2C58B182D4EBCB1F1E18608003B"x
  735.                #DefineRexx
  736.                <$RebuildFile FILE="prev.gif">
  737.        #endif
  738.        #ifndef OL_DOC_HTML_NEXT
  739.                ;--- Define the link -----------------------------------------
  740.                #define OL_DOC_HTML_NEXT   <A {$LinkGuts=^HREF="{$Page}.<??HtmlExtn>"^}><IMG SRC="next.gif" BORDER=0 WIDTH=49 HEIGHT=31 ALT="[Next]"></A>
  741.  
  742.                ;--- Create the graphic --------------------------------------
  743.                #DefineRexx ""
  744.                            NewFileData =                "47494638396132002600B3000000262600525200989801B8B800EDED78E0E0C8D8D878979768F8F800000000000000000000000000000000000000000021FF0B4E45545343415045322E300301000000"x
  745.                            NewFileData = NewFileData || "21F90409030008002C01000700310016000004E710C949ABBD18996C4DF96028861B770C253705C2E0BE703C1044DAB1B53A19002BFCC0607056C01802B8A24E72E8099F419A6DD264CDA62600742BA0"x
  746.                            NewFileData = NewFileData || "5D9AC0EB5213D07285444B399A5BF27C67A0B4B2666331E078586AE81F9D76171E030584033F3232042E343248482D8C73121F89968A348D31023D48998D04057D078FA5A6A7A5022CABA600AEAEABAA"x
  747.                            NewFileData = NewFileData || "B22506A4AFB7B8B9ADB9B8A602777EB5707A88C17F5007771547C3C453AE4F4A3AA4C441D213D041CA16D4D58817753FD71C47DE407755C563DDDEE33BD9EE4665BCF42CDB5503630807FCFDFEFFFEB6"x
  748.                #DefineRexx
  749.                #DefineRexx ""
  750.                            NewFileData = NewFileData || "3109104F9FC10C075444000021F90409030008002C02000700300015000004E210C949ABBD18993C8DFF60286E1C520864760E6CEBBE6E511A8120978700EF2F715F34808090CA1C0081A472C9AC0D88"x
  751.                            NewFileData = NewFileData || "980000F92C628ECDACF2F9A318A6C96137A32D07B8962332592D69D6E6A50E4A512B87F44C30CE4477C072043E33527C4B4F3085818256153467033A024E0367933A3C952F9882058D1A054F042C82A2"x
  752.                            NewFileData = NewFileData || "A3A5A602AAAB932E82A53E5606A1A8B5A3A2A6A34D60A4AF039E8EB79930AFA307158067AFC05EA1C3998202C75EC9788D06CFCF0493B2D579CD07074A53E4E5E670D7D59F17864CD3696BEF6E58ED01"x
  753.                            NewFileData = NewFileData || "F28E52F73323FC1F1C34EBDC0814187042040021F90409030008002C02000A00300012000004D110C949ABBD189963F01660288E649121457100819915642CBB96110800200C5D6608B7207028140E04"x
  754.                #DefineRexx
  755.                #DefineRexx ""
  756.                            NewFileData = NewFileData || "B4892D90D30D78A74D734A9DDE7649C4CA7ACC5E0AD570F30A9D6CB98342CFC714576FCF94BC3DDDC54F92B37B2CA337ED716B3501843A4C844C402C322045404F908214064F049004803B9895982370"x
  757.                            NewFileData = NewFileData || "90A069924A9A97769B9B0304AB145B01A0ABA23E9597A6AA97AB82AEB804A31430B7B49599AAB91506399FAB5EADA1CECEAB04CC4B37D127078C8CC56C84C6171FD98CBD514CD23E72E8E9EA72BEC701"x
  758.                            NewFileData = NewFileData || "0478F1F251ED08110021F90409030008002C01000800310016000004FF10C949ABBDD8189C8BFF60F86D9C11101C1604C2E0BE304C10E4759C753A1940E0B6030170D8221430B7A2CE7200B404BE012B"x
  759.                            NewFileData = NewFileData || "189DD22E2B977159093883C0EAD337CB2178D1C1B55488B9DFB223054DC55D0CB7957ECFEF5BD713003D823D03056612057E8B7D504586900284824202468808798C8B8E2C9595933D8E4598784DA1A8"x
  760.                #DefineRexx
  761.                #DefineRexx ""
  762.                            NewFileData = NewFileData || "932C8CA1ABA398993D7AA2822BB2A2429CAEB90207B02685603F43C32F07C7C77A314203B03B5341C552D2CD5D5F3002722926442E51CCCC2F165E402FDA2907DDD1C2D32F884D692E5CE9C43FF6F786"x
  763.                            NewFileData = NewFileData || "17058230CE138AE5E0B839672D8A3F092636F969E18C0700793A122AF44390C9C3835C3222A9A8B1E3361D110100003B"x
  764.                #DefineRexx
  765.                <$RebuildFile FILE="next.gif">
  766.        #endif
  767.        #ifndef OL_DOC_HTML_TOP
  768.                ;--- Define the link -----------------------------------------
  769.                #define OL_DOC_HTML_TOP    <A HREF="#TOP"><IMG SRC="top.gif" BORDER=0 WIDTH=30 HEIGHT=30 ALT="[Top]"></A>
  770.  
  771.                ;--- Create the graphic --------------------------------------
  772.                #DefineRexx ""
  773.                            NewFileData =                "4749463839611E001E00FE0000C0C0C0080031F7180800C66BEFDE008C00A531FFFF7384000042A5DE6B6B00DED673A573FF3939FFFFFF8C00738C0800009CD6006318006BBDA5FFFF29BD299CD618C6"x
  774.                            NewFileData = NewFileData || "EF0839009408005AFF8C0000299473CEB5F74208BDB5637BC621520042FF5A5A39949C52CE21A5429400C68C42427B001084FFADADFFB500944A00FF6300297B423900636BFFE700D6ADC600AD00B531"x
  775.                            NewFileData = NewFileData || "FFD6D6DEC600A529296B006394842910008C008C94001863CE94ADDE5A0073397B4AA58C4A6B08FF5252FF8C8C94398400844A310042B5000000B552219C7B00316B4AFFCEDE10086B8429BD73636300"x
  776.                            NewFileData = NewFileData || "A584FFFF39638C006B9C21CE9C00104294CEC6C6FFFFD63100ADC61029631063BD9C948C0063004A4AAD2110D6BD00947300BD4ABD946300ADBD008CB500427BA50084DE7B7B846300942929BDD62184"x
  777.                #DefineRexx
  778.                #DefineRexx ""
  779.                            NewFileData = NewFileData || "21008CAD6B5A005A18AD390073424A8410FFE7E708B5D6DEFFFF08AD8C94007B00294A6BBD1818D6D642397318B55A08AD397BC6A500317B1094BDFF4A4A633973009C9400521863A57300000021F904"x
  780.                            NewFileData = NewFileData || "01000000002C000000001E001E004007FE800082838485398588898274010150382691929138381850188A887D1111309FA09F6976767E9A8866A91CABACAD534AA78A1F1F586161700E0E23B1824E37"x
  781.                            NewFileData = NewFileData || "376D6D5E0AC4C5C6C406525206C221A73D070716D3D4D36554541DBC8348020CDFE0E0203F0D09DB89405834BAE7887B0142422C4BF44B2CF7F7DB4D50717808FF0003FEC363A46093423C7858599850"x
  782.                            NewFileData = NewFileData || "4D902024224A8CF8E4488B28513668B4C24353958F22428A149925CB99766352A258C972A58C975DDA3D183284811E1F38718238014200AC7685D4ED028A6ED6BA5C0E881202F2010D8D172F70E51ADA"x
  783.                #DefineRexx
  784.                #DefineRexx ""
  785.                            NewFileData = NewFileData || "AE91BC0B58B3DEC380A1C436478F34881D4B164F251C5E133529E8E4CB17087C70E3CA959BC789DD4221F8789933470B1FBDC78C1998D0C08D1B294CB43853A4A6F180C7901F1779F2E44EBB2A9D2868"x
  786.                            NewFileData = NewFileData || "DEAC398DE605ED7A40AB40BA74690F544E9E8B768580EBD7AECB4CD3762E85ED0CB873E7D6A123E6B9073305081F2E5C0F03243FB70DE9162E9C18366CCC9D53A22481F5EBD8C58839912810003B"x
  787.                #DefineRexx
  788.                <$RebuildFile FILE="top.gif">
  789.        #endif
  790.        #ifndef OL_DOC_HTML_BOTTOM
  791.                ;--- Define the link -----------------------------------------
  792.                #define OL_DOC_HTML_BOTTOM <A HREF="#BOTTOM"><IMG SRC="bottom.gif" BORDER=0 WIDTH=30 HEIGHT=30 ALT="[Bottom]"></A>
  793.  
  794.                ;--- Create the graphic --------------------------------------
  795.                #DefineRexx ""
  796.                            NewFileData =                "4749463839611E001E00FE0000C0C0C0080031F7180800C66BEFDE008C00A531FFFF7384000042A5DE6B6B00DED673A573FF3939FFFFFF8C00738C0800009CD6006318006BBDA5FFFF29BD299CD618C6"x
  797.                            NewFileData = NewFileData || "EF0839009408005AFF8C0000299473CEB5F74208BDB5637BC621520042FF5A5A39949C52CE21A5429400C68C42427B001084FFADADFFB500944A00FF6300297B423900636BFFE700D6ADC600AD00B531"x
  798.                            NewFileData = NewFileData || "FFD6D6DEC600A529296B006394842910008C008C94001863CE94ADDE5A0073397B4AA58C4A6B08FF5252FF8C8C94398400844A310042B5000000B552219C7B00316B4AFFCEDE10086B8429BD73636300"x
  799.                            NewFileData = NewFileData || "A584FFFF39638C006B9C21CE9C00104294CEC6C6FFFFD63100ADC61029631063BD9C948C0063004A4AAD2110D6BD00947300BD4ABD946300ADBD008CB500427BA50084DE7B7B846300942929BDD62184"x
  800.                #DefineRexx
  801.                #DefineRexx ""
  802.                            NewFileData = NewFileData || "21008CAD6B5A005A18AD390073424A8410FFE7E708B5D6DEFFFF08AD8C94007B00294A6BBD1818D6D642397318B55A08AD397BC6A500317B1094BDFF4A4A633973009C9400521863A57300000021F904"x
  803.                            NewFileData = NewFileData || "01000000002C000000001E001E004007FE80008283824A4A0988898A626227848F90070757049596956516161D9083217C5E73735A7CA00AA7A8A806130D6E6E524C5A219D84401F68342F2F700EBD23"x
  804.                            NewFileData = NewFileData || "B4C00F0F4302C5C6C57A0C484AC09055111114D2D3D269D20BCD83015050381ADFE0E17838E425D9B45834BFE7B44348020CF1F2F1626C6C09EC8229FB19FDFEFE3A7474C907A0478F0315122A54E881"x
  805.                            NewFileData = NewFileData || "CA19826A220E9848716291274FEE346B62C488932F5F20881C4992641E2728B305082084C585973059B0C080C11C4141B63ED0E8D5EBE6A077F38282F8D1005FBE614318E8F1C194298813200430CB67"x
  806.                #DefineRexx
  807.                #DefineRexx ""
  808.                            NewFileData = NewFileData || "A62A87AB58B34E99CA6E8C571460C38295417660BE830734A9555B860A154E80F9AAC81541B76EDD2C591EE6EB030D86DFBF7ED3D8B1E387160F1E56121F5613240889C7901F3F39D2224A940D98ADF0"x
  809.                            NewFileData = NewFileData || "20E4E4C68D366DBCA41AAD4A8A1403A167416A02250E1E04B063CB868DA7A39126CDE8ACEC66A2B7EFDEE43040C1906F0FCB964B922F91C9DCA7A00F1FB08409C3CBC13AE78380A4B38E9D568E7C8100"x
  810.                            NewFileData = NewFileData || "003B"x
  811.                #DefineRexx
  812.                <$RebuildFile FILE="bottom.gif">
  813.        #endif
  814.        #ifndef OL_DOC_HTML_CONTENTS
  815.                ;--- Define the link -----------------------------------------
  816.                #define OL_DOC_HTML_CONTENTS <A HREF="<??ContentsId>.<??HtmlExtn>"><IMG SRC="contents.gif" BORDER=0 WIDTH=63 HEIGHT=37 ALT="[Contents]"></A>
  817.  
  818.                ;--- Create the graphic --------------------------------------
  819.                #DefineRexx ""
  820.                            NewFileData =                "4749463839613F002500B30800000000800000008000808000000080800080008080808080C0C0C0FF000000FF00FFFF000000FFFF00FF00FFFFFFFFFF21F90401000008002C000000003F0025000004"x
  821.                            NewFileData = NewFileData || "FF10C949ABAD20EB7CBBFF6097296449021E17AE2C60BEA7A53D286B8B2EFC6EF343D737890AB7D96976BEA412181C5236C95C09B0442A253EA68DEACC28B356B0A9764094A34DEF0FFAA521B1D2581B"x
  822.                            NewFileData = NewFileData || "BD55CFDB7105351A4E9E7F5B087B771207593C76797B154B2B8873658677876E630F58774E388282979166085F66732396A1A29259201CAC9313939553578C5F5A18AC828349AFBB147CB23EA0B0AA1D"x
  823.                            NewFileData = NewFileData || "09282A839FA8789697A7C351B608C6B942B0A3A4C098D0B5B6D49C07BAC1859963BACA84DD15C6C7B983DB3EA9BF27EF779F7F741409D4ED76BDCF7FE2CC80E76B922609DFFABDC3872F961E1A4A2241"x
  824.                #DefineRexx
  825.                #DefineRexx ""
  826.                            NewFileData = NewFileData || "63A5411FBF6AFEE23D9BF750D7468364C22AEA6B87F1DD466C8F207A1A56B1CCC1699C6A509C038F54B06E3C9E1CCBB06FC2BE762E8578FC1865893891B7B400E8E9F362B55CBB48B948645486C83282"x
  827.                            NewFileData = NewFileData || "F625B0C04F265671B5ACA8A198738206ADC5BA0A318B33CF892C6B1021D2BAF54342B3D6D698D5219727DDBF7557FC5CCBA9D341B77D9906B99050A63BA145C614984C99E7620F680BC77C9C8B9D9EA5"x
  828.                            NewFileData = NewFileData || "940B9CBD0CC258509764973245F1738362D2697756AC9879DD5FD8821B73A08BBBB7ED0DD35EFB1E1E3CB870E2C46B230F1201003B"x
  829.                #DefineRexx
  830.                <$RebuildFile FILE="contents.gif">
  831.        #endif
  832.        #ifdef  OL_DOC_HTML_GENERATE_SEARCH_ICON
  833.                ;--- Create the graphic --------------------------------------
  834.                #DefineRexx ""
  835.                            NewFileData =                "4749463839613B002800C40A0000000080000000800080800000008080008000808080808004040404649CBFC3C534CCCC6464640D646404046464349C64C3FC"x
  836.                            NewFileData = NewFileData || "9CCBFC34343464A0C5043434344A9C3433646464A1C0C0C0FF000000FF00FFFF000000FFFF00FF00FFFFFFFFFF21F9040100000A002C000000003B0028004005"x
  837.                            NewFileData = NewFileData || "FFA0228E64699E68AAAA4B12414A34C99332DDF8754D57D5FB9547055891FC7ABB9B2C9268209E4F536B86B9ED7416DF0D78B578BD158B6498CD4A8448DFAE09"x
  838.                            NewFileData = NewFileData || "8D965AB1F8D256C5D5ECD6B40E6FAF46626C6D52093132081208334E4F0D633113080D90860D8650118D11869A9A81502BA0A1A2A32D3037753F755661AC5F60"x
  839.                #DefineRexx
  840.                #DefineRexx ""
  841.                            NewFileData = NewFileData || "65653F4068379E6E242D9C370A10AA7F3259ADACACAB6359574949B608837314899A4E4A3708158913D655894E9A85D23C089C4C8B9F2514E7E8E9EAEBECEDEE"x
  842.                            NewFileData = NewFileData || "E86DCCA3F3F4F32D09F8F9FAFBFCFDFEFFE46E8DC8C5AB8A8D1C47D4E8E861AC8CB03143902451B06CD09D2A4878847935A4A3AB57B0C60881A86542C5372E1E"x
  843.                            NewFileData = NewFileData || "FFF1D85303C29F8E6460B15AC80AA2C40A3C4C069487CB85CB471868E090A1A087C399AB90F2C10068E7A03810A030C0040507A23DD69E48B0D2064391179338"x
  844.                            NewFileData = NewFileData || "9DECF9C7E59F439824748BA0F589214895B8954DAB296C27A728FFE9DDCB371FDE7A80030B1E4CB8B0E1140B122B5ECCB8B1E3C79013FF1D48686D9C3B07ED20"x
  845.                #DefineRexx
  846.                #DefineRexx ""
  847.                            NewFileData = NewFileData || "D313B163C65335FE8CA55C68429DCC7960CA129645C810216892CC182D024E2F3C3A4ADAD042A415C72122555F1817EFA9E91C6A567DFCB271E351E09D33D256"x
  848.                            NewFileData = NewFileData || "30C54EC96147B67871D01C5630D55C741647A94A63C71ABBF71805794C58E788CA26D726E412A31D18322EB077E825D94C3525AD211F7595155217684BF4D0C0"x
  849.                            NewFileData = NewFileData || "B030C668710519EAE1419C2028FD62960CE5CD908343EA2574051FBC5034602E172A610A1F39E4F4618AA744C0D40C628DE8425DD0D4F0958B3720B21538D820"x
  850.                            NewFileData = NewFileData || "B003021684080103143C124E8CE3F5642006CF28720805D158C0D6053620F08C5A124009A302D664F9CC2F1396D3D34F4B58104E05456A7201946F4DC2402218"x
  851.                #DefineRexx
  852.                #DefineRexx ""
  853.                            NewFileData = NewFileData || "44C24951694E52C874B92C218E81738A03E69E7E6A829F85610A545B038826AAE8A28C36EAE8A3882679D8A494565A4208003B5031444449520D0A5031444449"x
  854.                            NewFileData = NewFileData || "520D0A5031444449520D0A5031444449520D0A5031444449520D0A5031444449520D0A"x
  855.                #DefineRexx
  856.                <$RebuildFile FILE="search.gif">
  857.        #endif
  858. #endif
  859.  
  860.  
  861.  
  862.  
  863.  
  864. ;----------------------------------------------------------------------------
  865. ;--- CONTENTS VARIABLES -----------------------------------------------------
  866. ;----------------------------------------------------------------------------
  867. #RexxVar  RxUniqueContentsNumb = 0           ;;Number each item 1,2,3 ...
  868. #RexxVar  RxContentsLevel      = 0           ;;"Indenting" level
  869. #RexxVar  RxContentsSimple     = ""          ;;Simple list based contents (fully expanded)
  870. #RexxVar  RxContentsJava       = ""          ;;Java based contents
  871.  
  872.  
  873. ;----------------------------------------------------------------------------
  874. ;--- CONTENTS ---------------------------------------------------------------
  875. ;----------------------------------------------------------------------------
  876. #if    ['<$DocType>' = 'HTML']
  877.        #define _AddToContents                                                                                 \
  878.                ;--- Have another contents item -------------------------------                               -\
  879.                #RexxVar  RxUniqueContentsNumb + '1'                                                          -\
  880.                                                                                                              -\
  881.                ;--- Simple - Need to change levels? -------------------------                                -\
  882.                #if  [RxHeadingLevel <> RxContentsLevel]                                                      -\
  883.                        ;--- Simple - Need to generate at least one "<UL>" or "</UL>" --                      -\
  884.                        #if [RxHeadingLevel > RxContentsLevel]                                                -\
  885.                            #evaluate ""  do RxHeadingLevel-RxContentsLevel; RxContentsSimple = RxContentsSimple || '<UL><?NewLine>'; end  -\
  886.                        #elseif                                                                                                              -\
  887.                            #evaluate ""  do RxContentsLevel-RxHeadingLevel; RxContentsSimple = RxContentsSimple || '</UL><?NewLine>'; end -\
  888.                        #endif                                                                                -\
  889.                        #RexxVar RxContentsLevel = RxHeadingLevel                                             -\
  890.                #endif                                                                                        -\
  891.                                                                                                              -\
  892.                ;--- Simple - Add contents item ------------------------------                                -\
  893.                #evaluate  ""  RxContentsSimple = RxContentsSimple || "<LI><" || '$LinkTo ID=■{$Id $$SQx2}■ TEXT=■{$Text $$SQx2}■><?NewLine>' -\
  894.                                                                                                              -\
  895.                ;--- Want Java based Navigation? -----------------------------                                -\
  896.                #ifdef OL_DOC_TRY_JAVA_NAVIGATION                                                             -\
  897.                    ;--- Java - Remember this item was at this level ---------                                -\
  898.                    #RexxVar  RxLastContentsItem.<??RxHeadingLevel> = '{$Text}'                               -\
  899.                                                                                                              -\
  900.                    ;--- Java - Add contents item ----------------------------                                -\
  901.                    #evaluate  ""  RxContentsJava = RxContentsJava || '<param name="item<??RxUniqueContentsNumb>" value ="' || RxLastContentsItem.1 -\
  902.                    #evaluate  ""  do I=2 to RxHeadingLevel; RxContentsJava = RxContentsJava || '/' || RxLastContentsItem.I; end;                   -\
  903.                    #evaluate  ""  RxContentsJava = RxContentsJava || ';' || ';<??RxValidId>.<$HtmlExtension>;{$Text}"><?NewLine>'                  -\
  904.                #endif
  905.  
  906.  
  907.        #define _GenerateContentsHtml                                                                                \
  908.                ;--- Simple - Output Start of HTML ---------------------------                                      -\
  909.                <$HeadingCodes TEXT='<$OL_DOC_HTML_CONTENTS_TITLE>'><?NewLine>                                      -\
  910.                <CENTER><H1><$OL_DOC_HTML_CONTENTS_TITLE></H1></CENTER><?NewLine>                                   -\
  911.                                                                                                                    -\
  912.                ;--- Simple - Output contents (use d2c(10) to process macros -                                      -\
  913.                #evaluate ""  do RxContentsLevel; RxContentsSimple = RxContentsSimple || '</UL><?NewLine>'; end   -\
  914.                #evaluate ""  "RxContentsSimple = RxContentsSimple || d2c(10)"                                      -\
  915.                <UL><??RxContentsSimple></UL>      ;;Extra indenting                                                -\
  916.                                                                                                                    -\
  917.                ;--- Want Java based Navigation? -----------------------------                                      -\
  918.                #ifdef OL_DOC_TRY_JAVA_NAVIGATION                                                                   -\
  919.                    ;--- Generate separate contents for testing for now ----------                                  -\
  920.                    <P>Please try the <A HREF="treecont.htm">Java TREE</A> version of                                \
  921.                    this contents and <A HREF="mailto:<?PpwizardAuthorEmail>?subject=PPWIZARD JAVA TREE CONTENTS">tell me</A> \
  922.                    if it works and if it does what operating system, browser, java version ("java -version") etc             \
  923.                    you are using and whether you liked the way it works.  THANKS.                                  -\
  924.                    #output "treecont.htm"                                                                          -\
  925.                    <$HeadingCodes TEXT='JAVA TREE TEST - <$OL_DOC_HTML_CONTENTS_TITLE>'><?NewLine>                 -\
  926.                    <CENTER><H1>JAVA TREE TEST - <$OL_DOC_HTML_CONTENTS_TITLE></H1></CENTER><?NewLine>              -\
  927.                    <?NewLine>                                                                                      -\
  928.                    <applet width="100%" height="70%" name="Tree" code="TreeApp.class" align="top">                 -\
  929.                    <?NewLine><??RxContentsJava>                                                                    -\
  930.                    </applet>                                                                                       -\
  931.                    <?NewLine>                                                                                      -\
  932.                    #ifdef  OL_DOC_HTML_FOOTER                                                                      -\
  933.                            <$OL_DOC_HTML_FOOTER CONTENTS='Y'>                                                      -\
  934.                    #endif                                                                                          -\
  935.                    <?NewLine>                                                                                      -\
  936.                    </BODY></HTML>                                                                                  -\
  937.                    #output                                                                                         -\
  938.                #endif                                                                                              -\
  939.                                                                                                                    -\
  940.                ;--- Complete the HTML index page ----------------------------                                      -\
  941.                #RexxVar HtmlPrevId1 = ''                                                                           -\
  942.                #RexxVar HtmlPrevId2 = ''                                                                           -\
  943.                #RexxVar HtmlNextId = ''                                                                            -\
  944.                #ifdef  OL_DOC_HTML_FOOTER                                                                          -\
  945.                        <$OL_DOC_HTML_FOOTER CONTENTS='Y'>                                                          -\
  946.                #endif                                                                                              -\
  947.                <$_HeadingEndHtml>      ;;Finish off contents
  948. #endif
  949.  
  950.  
  951.