// Generated by SAS macro jsWriter 04APR02:17:23:58 // Richard A. DeVenezia // http://www.devenezia.com function title1 () { document.write ( "<H1><A HREF='http://www.devenezia.com/downloads/sas/macros/jsTitleAndFootnote.sas'>jsTitleAndFootnot" + "e.sas</A></H1> <P ALIGN=LEFT STYLE='margin-top:12pt;font:normal bold 12pt monospace'> Richard A. DeV" + "enezia<BR> <A HREF='http://www.devenezia.com'>http://www.devenezia.com</A><BR> If you find these mac" + "ros useful, please <A HREF='/contact.php'>let me know</A> </P> <DIV STYLE='padding:" + "4pt;background-color:white;color:black;font:normal 10pt monospace'> <P> I have developed a suite of" + " macros to enable long titles or footnotes when working with ODS HTML. The macros store Title and Fo" + "otnote information in a separate file in specially constructed javascript functions. The macros als" + "o generate SAS Title and Footnote statements that are formulated to invoke the javascript functions." + " Thus, when the ODS HTML created page is accessed by a web browser the title and footnote informati" + "on is delivered to the reader. </P> Macros and Usage: <HR NOSHADE><b> %jsTitleFootnoteReset</b> ( <i" + ">fileref</i> ) <P> <i>fileref</i> - a FILEREF defined using a FILENAME statement. </P> <P> The <i>fi" + "leref</i> is where javascript functions will be written. The file should not be the same file that " + "ODS HTML is writing to. The ODS HTML HEADTEXT= option should be used to ensure the generated javasc" + "ript file is available to the generated HTML. </P> <HR NOSHADE><b> %jsTitle</b> ( <i>N</i>, <i>text<" + "/i> )<br><b> %jsFootnote</b> ( <i>N</i>, <i>text</i> ) <P> <i>N</i> - The title or footnote number, " + "1 through 10.<BR> <i>text</i> - Text to be displayed as the title. </P> <P>By default the title or f" + "ootnote is left-justified. To override this default, wrap <i>text</i> in a <P> block with ALIG" + "N=CENTER|RIGHT|JUSTIFY. </P> <P> The <i>text</i> may contain direct HTML for embedding. Best result" + "s are experienced if the HTML is valid. If you want to display characters normally interpreted by t" + "he SAS macro system, pass the text wrapped in <b>%nrstr()</b>. If you experience SAS errors while u" + "sing the macros while trying to work with special characters, consider using <A HREF='http://www.dio" + "nysia.org/html/entities/'>HTML entities</A> discussed in the HTML <A HREF='http://www.w3.org/TR/REC-" + "html40/sgml/entities.html'>4.0 Specification</A>. </P> <HR NOSHADE><b> %jsODSHeadText</b> ( <i>URL</" + "i> )<br> <P> <i>URL</i> - The URL where the javascript file should be loaded from<BR> </P> <P>For si" + "mple uses of <b>%jsTitle</b> and <b>%jsFootnote</b> the <i>fileref</i> indicated in <b>%jsTitleFootn" + "oteReset</b> will point to a file in the same folder as the HTML file being created by ODS HTML. Th" + "is means the filename itself is sufficient to pass as the <i>URL</i>. </P> <P>In more sophisticated " + "uses, the <i>fileref</i> indicated in <b>%jsTitleFootnoteReset</b> will point to a file in a folder " + "different than that of the HTML file being created by ODS HTML. This means the location of the javas" + "cript file when accessed through your web browser must be known. For pages that are read directly of" + "f a disk or shared drive this means some relative or absolute path according to the local system. Fo" + "r pages that are read from web server this means some relative or absolute path according to the web" + " server. </P> <P> jsODSHeadText is a convenience macro for use when specifing the value to use in yo" + "ur ODS HTML HEADTEXT=. The macro generates this literal text: </P> <PRE> <SCRIPT LANGUAGE="" + ""JAVASCRIPT"" SRC=""&URL""></SCRIPT> </PRE> <P> which wh" + "en used as a HEADTEXT= value will cause this: </P> <PRE> <SCRIPT LANGUAGE="JAVASCRIPT"" + " SRC="&URL"></SCRIPT> </PRE> <P> to appear in the ODS HTML <HEAD>. </P> <P>" + "Note: Your application may require HEADTEXT other than that needed by these macros. </P> <HR NOSHADE" + "><b> Sample SAS code</b><br> <PRE> %let <font style='background-color:lightblue'>htmlFolder</font> =" + " <i>some-local-system-path</i>;<br> %let <font style='background-color:lime'>jScriptFilename</font> " + "= <i>some-filename</i>;<br> filename <font style='background-color:yellow'>jScript</font> "&<fo" + "nt style='background-color:lightblue'>htmlFolder</font>.\\&<font style='background-color:lime'>jScri" + "ptFilename</font>.";<br> <b>%jsTitleFootnoteReset</b> ( <font style='background-color:yellow'>j" + "Script</font> );<br> ODS HTML body = "&<font style='background-color:lightblue'>htmlFolder</fon" + "t>.\\<i>html-filename</i>"<br> headtext="<i>your head text</i><br> " + " <b>%jsODSHeadText</b> ( &<font style='background-color:lime'>jScriptFilename</font> )<br> " + " "<br> ;<br> %jsTitle (1, Title (may include <b>HTML</b> itself))<br> .." + ".<br> ODS HTML CLOSE;<br> </PRE> <HR NOSHADE><b> Caveats</b> <p>If you try to set a title or footnot" + "e that has a <PRE> block that covers mutiple lines, everything will run together. This is bec" + "ause the SAS macro system translates newlines to spaces. Use <BR> tags to ensure newlines occ" + "ur where you want them. </p> <P> These macros bypass the ODS renderer, thus, inline styling directiv" + "es indicated by \\S will <U>not</U> be ODS rendered. </P> <PRE> </DIV> <DIV STYLE='margin-left:0.5in" + ";border:thin black solid;padding:8pt'> <P> So, make your titles as long as you want. The more the in" + "formation the better. The same goes for the footnotes. There is pratically no limit to how long the " + "titles and footnotes can be. Actually, they should not be more than 65536 characters long. </P> <P>Y" + "ou may reuse a title number within a given block of code that writes to an HTML file. What this mea" + "ns is that jsTitle() and jsFootnote() keep track of how many times they have been called since jsTit" + "leFootnoteReset() and keep same numbered titles and footnotes in separate javascript functions. </P>" + " <P>Very long titles and footnotes in HTML enables you to:</P> <UL STYLE='margin-left:20pt'> <LI>Use" + " CSS/DHTML for impressive or exotic content visualization and navigation. </LI> <LI>Embed Javascript" + " for client side menuing. Rather than use static menus, your SAS program(s) can produce HTML with c" + "ontext sensitive menuing information. Examples of this are not provided.</LI> <LI>Embed Java Applets" + ", ActiveX components or Shockwave objects that require many parameters to be passed to them. The mor" + "e adventurous might try to embed SAS/Internet controls, etc...</LI> <LI>Embed XML for content presen" + "tation</LI> <LI>Embed any other various ML such as MathML or MusicML.</LI> </UL> </DIV> <P style='ba" + "ckground-color:white'>Thus ends TITLE 1.</P> " ); } function footnote2 () { document.write ( "This is footnote 2 output by macro jsFootnote(), jsTitleAndFootnote defaults to left-alignment" ); } function footnote3 () { document.write ( "<P ALIGN=CENTER>Centered</P>" ); } function footnote4 () { document.write ( " <P ALIGN=RIGHT STYLE='font:normal bold 16pt monospace;color:white;background-color:blue'> This is a" + "ll in a P tag<BR> Right alignment from the ALIGNMENT attribute<BR> color and font from the STYLE att" + "ribute</P>" ); } function footnote5 () { document.write ( "<P ALIGN=LEFT>Left</P>" ); } function title1use2 () { document.write ( "Javascript Title 1" ); } function title1use3 () { document.write ( "Another Javascript Title 1" ); } function title1use4 () { document.write ( "A test of all titles" ); } function title2 () { document.write ( "Two" ); } function title3 () { document.write ( "Three" ); } function title4 () { document.write ( "Four" ); } function title5 () { document.write ( "Five" ); } function title6 () { document.write ( "6" ); } function title7 () { document.write ( "7" ); } function title8 () { document.write ( "8" ); } function title9 () { document.write ( "9" ); } function title10 () { document.write ( "10" ); } function footnote1 () { document.write ( "A test of all footnotes" ); } function footnote2use2 () { document.write ( "2" ); } function footnote3use2 () { document.write ( "3" ); } function footnote4use2 () { document.write ( "4" ); } function footnote5use2 () { document.write ( "5" ); } function footnote6 () { document.write ( "6" ); } function footnote7 () { document.write ( "7" ); } function footnote8 () { document.write ( "8" ); } function footnote9 () { document.write ( "9" ); } function footnote10 () { document.write ( "10" ); } function title1use5 () { document.write ( " <P ALIGN=LEFT STYLE='margin-top:12pt;font:normal bold 12pt monospace'> This page was generated by S" + "AS program <A HREF='index.php?m=jsTitleAndFootnote'>jsTitleAndFootnote-sample.sas</A><BR> Richard A. DeVenezia<BR> ht" + "tp://www.devenezia.com</P> " ); } function footnote1use2 () { document.write ( " <P ALIGN=LEFT STYLE='margin-top:12pt;font:normal bold 12pt monospace'> This page was generated by S" + "AS program <A HREF='index.php?m=jsTitleAndFootnote'>jsTitleAndFootnote-sample.sas</A><BR> Richard A. DeVenezia<BR> ht" + "tp://www.devenezia.com</P> " ); }