dtimg0
    
     Forgot login? | Register
FOLLOW US
Follow us on Twitter! Like us on Faceook! Follow us on LinkedIn!

submit_query.jpg

Serving Spooled Files to the Web PDF Print E-mail
Programming - Web Languages
Written by Christopher Devous   
Thursday, 31 January 2002 18:00

Some people in this world are gifted with tools, and some people are not. I are not. This became abundantly clear one recent Saturday afternoon when the lawnmower stopped lawn mowing. I took the lawnmower apart. I put it together. I did it again. For the life of me, I couldn't figure out what was wrong with the thing. I decided that since it was 107 degrees Fahrenheit, the problem was nothing that a good repair shop couldn't handle, so I took the stupid lawnmower to the shop, gave the kid down the street 10 bucks to mow the lawn, and drank a beer.

To some folks, transporting things across computer systems is kind of like fixing the lawnmower is to me. Some can do it themselves; some would rather hire it out. Fortunately, where putting spooled files into Web pages is concerned, both are reasonable and viable options, and I'll show you both ways. For the purposes of this article, I will assume that your iSeries/400 is not your Web server and that to publish spooled files you need to copy them into an HTML document on another machine. If your iSeries/400 is your Web server, I refer you to Chapter 10 of the excellent book iSeries and AS/400 APIs at Work by Doug Pence and Ron Hawkins (MC Press, 2001).

Stocking Your Toolbox

Since the goal here is to take a spooled output file from an AS/400 and put it on a Web page, you will find yourself faced with a process that consists of essentially two steps: Make a Web page out of a spooled file, and put it someplace where you can get to it so that you can copy it from your AS/400 to your Web server. This will not only save you paper, it will make your printout accessible to anyone with an Internet connection and a browser.

To create an HTML document from a spooled file, you must first copy the spooled file to a database file, then copy the database file to a document library file. From there, you can edit the file, move it to your Web server, and publish it on the Web.

If you do this a lot, it would be useful to have a toolbox of standard-issue components to build your HTML document. There will be some items that always go into your HTML documents, so it would help to create a database of those items. It would also help to be able to add some entries, such as a title, as you create the document. With a simple CL and RPG program, you can make creating HTML documents from spooled files relatively painless.

However, there is a caveat: In the example, I assume that the spooled file you wish to serve to the Web was created by your current interactive job. Adapting the example so that it works with any spooled file is left as an exercise for the reader. Evolving the example so that it does more is also left as an exercise for the reader.

Baby Steps

The first step in moving a spooled file to a Web page is to copy the spooled file to a database file. The database file must exist, but it can exist in QTEMP, so the job can clean up after itself.

If you break that step down, it becomes clear that you need to create a standard file containing some HTML lines. These are entries that will always go into the result, no matter what the result is. Create a database file with a record length of 136, and call it STDHTM. The command to create the file is CRTPF FILE(MYLIB/STDHTM) RCDLEN(136). Using DFU, add the following three records:



You may want to modify the above HTML to provide different colors or perhaps a background image. I've found that the courier font works best with reports. You might also want to add META tags to your file as appropriate. Having standard entries that you can combine with a spooled file to create an HTML document saves you from having to edit that document to add the same entries every time you create a Web page from a spooled file.

Now that you have set up your repetitive entries, you can put them into a database and append your spooled file to that database. The result will be a database that contains standard HTML entries and the entries from your spooled file. When you've done this, you'll almost be ready to move the file to the document library system.

Take a look at the CL in Figure 1 (the CL presents a prompt screen, whose DDS is in Figure 2, with a sample in Figure 3).


/*********************************************************************/
/*********************************************************************/
/* */
/* PROGRAM ID - SPOOLTOHTM */
/* AUTHOR - Christopher J. Devous */
/* MODIFIED - 3/13/00 */
/* */
/*********************************************************************/
PGM

DCLF FILE(MYLIB/SPLTOHTMPM)
VAR(&XTITLE) VALUE('Serving Spooled Files to the Web | Web Languages')
CHGVAR VAR(&PGMSGQ) VALUE('SPLTOHTM')

CHKOBJ OBJ(QTEMP/SPLFDB) OBJTYPE(*FILE)
MONMSG MSGID(CPF9801) EXEC(GOTO CMDLBL(NODEL))
DLTF FILE(QTEMP/SPLFDB)
NODEL:
CRTPF FILE(QTEMP/SPLFDB) SRCFILE(MYLIB/QDDSSRC) +
OPTION(*NOSRC *NOLIST) LVLCHK(*NO)
CPYF FROMFILE(MYLIB/STDHTM) +
TOFILE(QTEMP/SPLFDB) MBROPT(*ADD) +
FMTOPT(*NOCHK)

RDSPLY: SNDF RCDFMT(MSGCTL)
SNDRCVF RCDFMT(SPLTOHTMPM)
RMVMSG PGMQ(*SAME) CLEAR(*ALL)

IF COND(&IN03 *EQ '1') THEN(DO)
GOTO CMDLBL(DONE)
ENDDO

IF COND(&FLDNAM *EQ ' ') THEN(DO)
RMVMSG CLEAR(*NEW)
SNDPGMMSG MSG('Folder name is blank') TOPGMQ(*SAME)
GOTO CMDLBL(RDSPLY)
ENDDO

IF COND(&TITLE *EQ ' ') THEN(DO)
RMVMSG CLEAR(*NEW)
SNDPGMMSG MSG('Title is blank') TOPGMQ(*SAME)
GOTO CMDLBL(RDSPLY)
ENDDO

IF COND(&DOCNAM *EQ ' ') THEN(DO)
RMVMSG CLEAR(*NEW)
SNDPGMMSG MSG('Document name is blank') TOPGMQ(*SAME)
GOTO CMDLBL(RDSPLY)
ENDDO

IF COND(&SPLFILE *EQ ' ') THEN(DO)
RMVMSG CLEAR(*NEW)
SNDPGMMSG MSG('Spooled file name is blank') TOPGMQ(*SAME)
GOTO CMDLBL(RDSPLY)
ENDDO

OVRDBF FILE(SPLFDB) FRCRATIO(1)

CHGVAR VAR(&XTITLE) VALUE('')

CALL PGM(MYLIB/HADTITLE) PARM(&XTITLE)

CPYSPLF FILE(&SPLFILE) TOFILE(QTEMP/SPLFDB) +
MBROPT(*ADD)

CHGVAR     VAR(&TITLE) VALUE(''
CALL PGM(MYLIB/HADTITLE) PARM(&TITLE)

DLTOVR FILE(*ALL)

CPYTOPCD FROMFILE(QTEMP/SPLFDB) TOFLR(&FLDNAM) +
TODOC(&DOCNAM) REPLACE(*YES)

DLTF FILE(QTEMP/SPLFDB)

DONE:
RETURN

ENDPGM
Figure 1: This CL program forms the cornerstone of your building block.
A*****************************************************************
A*
A* FILE ID - SPLTOHTMPM
A* FILE NAME - Prompt Screen for Spooled Files to HTML conversion
A*
A*****************************************************************
A DSPSIZ(24 80 *DS3)
A PRINT
A R SPLTOHTMPM
A CF03(03 'EXIT')
A BLINK
A OVERLAY
A PUTOVR
A 1 73DATE
A EDTCDE(Y)
A 2 2SYSNAME
A 2 73TIME
A 23 5'Enter=Accept F3=Exit'
A DSPATR(HI)
A COLOR(BLU)
A 1 2'SPLToHTM'
A 1 23'Copy Spooled Files to Document Lib-
A rary'
A 9 18'Spooled File. . . . '
A SPLFILE 10A B 9 40
A 11 17'Document Name. . . .'
A DOCNAM 12A B 11 40
A 15 7'Title:'
A TITLE 50A B 15 16CHECK(LC)
A 13 17'Folder Name. . . . .'
A FLDNAM 10A B 13 40
A*
A R MSGRCD TEXT('MSG SFL RECORD')
A SFL SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMSGQ SFLPGMQ
A*
A R MSGCTL TEXT('MSG SFL CONTROL')
A OVERLAY SFLCTL(MSGRCD) SFLSIZ(10)
A SFLPAG(1) SFLDSPCTL SFLDSP SFLINZ
Figure 2: This DDS gives a prompt screen asking the user for the values you need.

Figure 3: This prompt screen appears as your user sees it.

After first checking to be sure the database file isn't already there, create a new database file called SPLFDB in QTEMP by issuing the command CRTPF FILE(QTEMP/SPLFDB) SRCFILE(MYLIB/QDDSSRC) OPTION(*NOSRC *NOLIST) LVLCHK(*NO). (Figure 4 shows the DDS for SPLFDB).

A*****************************************************************
A*
A* FILE ID - SPLFDB
A* FILE NAME - Container for Spooled File Records
A*
A*
A*****************************************************************
A R SPREC
A SPFLD 136A TEXT('Spool Records')
Figure 4: This shows the SPLFDB DDS source.

This command creates the physical file you'll use as a container for the records from which you want to create a Web page. Note that the command prevents a source listing and specifies no level checking. Now that you've got your file, you'll copy in the standard HTML lines that you put in the STDHTM file. The CL program issues the following command:

CPYF FROMFILE(MYLIB/STDHTM) TOFILE(QTEMP/SPLFDB) MBROPT(*ADD) FMTOPT(*NOCHK) 

This will copy your standard HTML lines into your SPLFDB file in QTEMP.Next, a prompt screen (see Figure 2 for DDS and Figure 3 for screen shot) asks for the spooled file name (&SPLFILE), the name of the document you wish to create (&DOCNAM), the folder in which you want the document to land (&FLDNAM), and a title for the document (&TITLE). These are all stored in variables within the CL program.

After doing some error checking to make sure you have all your values, add HTML tags to the document title keyed into the prompt screen, and put the result in a variable called (&XTITLE). This will save you from having to enter the tags yourself in the prompt screen. Your next step is to add the title line to the HTML already stored in SPLFDB. To accomplish this, I've written the simple RPG program HADTITLE shown in <B>Figure 5</B>. </p><!------ callout box begin ---><TABLE cellspacing="0" border="0" align="center"><TR><TD align="middle" bgcolor="blue"><TABLE cellspacing="0" cellpadding="2" border="0" width="100%"><TR><TD align="lrft" bgcolor="#ebebeb" ><!----- callout content begin ---><pre><br>HDebug <br> *---------------------------------------------------------* <br> * * <br> * Program - HAdTitle * <br> * Add record to SPLFDB * <br> * Add <BR> tag to end of existing untagged *<br> * Lines *<br> * * <br> *---------------------------------------------------------* <br>FSPLFDB UF A E K Disk <br> * <br> * --------------------------------------------------------------- <br> * M a i n l i n e P r o c e s s i n g <br> * --------------------------------------------------------------- <br> * <br>C Read SPREC 99<br>C DoW *IN99 = *OFF <br>C If %subst(SPFLD:1:1) <>'<' <br>C and %subst(SPFLD:133:1) <>'<' <br>C Eval %subst(SPFLD:133:4) = '<BR>' <br>C Update SPREC <br>C EndIf <br>C Read SPREC 99<br>C EndDo <br>C Eval SPFLD = HTMLine <br>C Write SPREC <br> * <br>C Move *ON *INLR <br> *---------------------------------------------------------------* <br> * End of MainLine Processing <br> *---------------------------------------------------------------* <br>C *InzSR BegSr <br> *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -* <br> * <br> * Parameter List <br>C *ENTRY PList <br>C Parm HTMLine 65 <br> * <br> *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*<br>C EndSr <br> *---------------------------------------------------------------*</pre><!----- callout content end ---></TD></TR></TABLE></TD></TR></TABLE><!------ callout box end ---><h5 align="center">Figure 5: This RPG program lets you add HTML tags to your document and sets line breaks over spooled file records. </h5><p> HADTITLE is very simple, indeed. Here's what it does: It looks for any record that doesn't begin with a tag marker(<) or end with a line break marker (<BR>). If it finds a record meeting those criteria, it adds a line break marker to the end of the record. HADTITLE then writes whatever was passed to it at the end of the file. </p> <p>Why would you do it this way? What you've done so far gives you a database file with one type of record: lines that consist of HTML tags wrapped around corresponding text. You can reasonably assume that all of those lines begin with a less than symbol (<).You don't want to change those lines, so the program looks for that symbol and ignores all lines that have < as their first character.</p> <p>You want to add a title, but because your title will change from report to report, you can't really make that part of your standard HTML, so you create a program to add the title for you. </p><p>What you haven't done yet is to copy your spooled file records into your database file. These records will contain no HTML. I've found, by experimenting, that they need to end with a line break--<BR>--or they all run together and look funny on the screen. After you've added the spooled file records, call HADTITLE once again to add those line breaks and append the </HTML> tag to end the document.</p> <p>To compile HADTITLE, you'll need to create an SPLFDB somewhere in your library list. On this first call of HADTITLE, it will ignore your STDHTM records (for the reasons described above) and add whatever title you keyed into your prompt screen.</p><p>Now that you've built the foundation of your HTML document, it's time to add the spooled file's records. The CL will issue the command CPYSPLF FILE(&SPLFILE) TOFILE(QTEMP/SPLFDB) MBROPT(*ADD). Note that the command as issued assumes that the spooled file was produced by the current interactive job. If you want to use any spooled file, you'll need to modify the code shown here to accommodate job name and number in addition to spooled file name.</p> <p>With your spooled file records now in place in your database file, you'll want to close your document with the </HTML> tag. Set that up as a parameter and, once again, call HADTITLE. This time, HADTITLE will add line break tags (<BR>) to the spooled file records and add the </HTML> tag at the end of the file before returning.</p> <p>Now that you've built a database file containing your HTML document as you want it to appear, you can take the final step and copy the database file to a folder in the document library. The CL does this by issuing the command CPYTOPCD FROMFILE(QTEMP/SPLFDB) TOFLR(&FLDNAM) TODOC(&DOCNAM) REPLACE(*YES). Then, clean up after yourself with DLTF FILE(QTEMP/SPLFDB).</p> <p>The Copy to PC Document (CPYTOPCD) command creates a document in the specified folder of the document library system. The document can be copied from the OS/400 IFS to your Web server and presented to the world. Please remember that the example was created for the purpose of showing the steps necessary to get a spooled file into an HTML document. You might want to add some error checking, like looking for the existence of a document name and warning of an overwrite, or checking to make sure the folder specified really exists, and perhaps tuning things up a bit. You might want to add some scripting code to the start of your document.</p><h3>I Don't Like Making My Own Stuff! </h3><p>Sometimes its easier (and safer!) to hire the kid down the street. A number of folks have produced spooled file utilities designed to help you publish reports to the Web. See the sidebar ("Tools to Help You Serve Spooled Files") for details.</p><p>If you've gotten to this point, you now have the basic tools necessary to create HTML documents from spooled files. I encourage you to play around with the code presented here and enhance it for your own environment. </p><p><B>Christopher J. Devous</B> is director of systems development for The Antigua Group, a manufacturer of fine casual apparel based in Scottsdale, Arizona. Chris has nearly 20 years of experience writing programs and designing and managing various types of computer systems. He can be reached by email at <A href="mailto: cdevous@antigua.com">cdevous@antigua.com</A>.</p><!------ callout box begin ---><TABLE cellspacing="0" border="0" width="50%" align="center"><TR><td class="post" align="middle" bgcolor="#3366cc"><TABLE cellspacing="0" cellpadding="2" border="0" width="100%"><TR><td class="post" align="left" bgcolor="#ebebeb"><!----- callout content begin ---><h3>Tools to Help You Serve Spooled Files</h3><p>Want to serve spooled files to the Web? No time to build the programs to do it? Here are some options, along with where you can find them on the Web:</p><ul> <li><B>BVS/Tools</B>' Spooled File Tools (SPLTOOL) is a shareware program that will help copy spooled files to folder documents, FTP, and email. Go to <A href="http://www.bvstools.com/">www.bvstools.com</A> for more information. <li><B>Kisco Information Systems</B>' WebReport/400 converts reports to HTML and sends them as email. Find it at <A href="http://www.kisco.com/">www.kisco.com</A>. <li><B>Business Computer Design Int'l</B>'s Spool-Explorer/400 pushes or pulls spooled files to PCs and the Web. Look for it at <A href="http://www.bcdsoftware.com/">www.bcdsoftware.com</A>. <li><B>Gumbo Software</B>'s Spool-a-Matic archives spooled files and sends them to the Web. Go to <A href="http://www.gumbo.com/">www.gumbo.com</A> for further information. <li><B>Evergreen Interactive Systems</B>'s AS/400 and iSeries Report Downloader sends report data to a variety of formats, including Microsoft Word, Excel, and HTML. Look for it at <A href="http://www.evergreeninteractive.com/">www.evergreeninteractive.com</A>. <li><B>Chouinard & Myhre</B>'s Spoolfile EMail'r distributes spooled files by email using Client Access/400 and ActiveX technology. Download an evaluation copy at <A href="http://www.cm-inc.com/what/index.html">www.cm-inc.com/what/index.html</A>. <li><B>Net400</B>'s NetMail400 lets you integrate your iSeries applications to email anything you can print. Find it at <A href="http://www.net400.com/">www.net400.com</A>. <li><B>RJS Software Systems</B>' WinSpool/400 supports Web integration, email integration, and electronic forms integration. For more information, visit <A href="http://www.rjssoftware.com/">www.rjssoft.com</A>. <li><B>DataTrade</B>'s SpoolView suite of report management products manages a variety of storage, archival, and retrieval options, including Internet-based PCs. Order a demo at <A href="http://www.datatrade.com/">www.datatrade.com</A>. <li><B>Broderick Data Systems</B>' SpoolOrganizer/400 supports email bundling of reports, as well as Internet access and many other features. Check it out at <A href="http://www.broderickdata.com/">www.broderickdata.com</A>.</li> </ul><!----- callout content end ---></td></TR></TABLE></td></TR></TABLE><!------ callout box end ---><p align="center">-Christopher J. Devous</p><style type='text/css'> .quotes div{ background-color:#eeeeee; } .rbroundbox { margin:auto; background-color:#eeeeee; } .rbtop div, .rbtop, .rbbot div, .rbbot { height:15px; line-height:15px; width:100%; } .rbtop { background:transparent url(http://www.mcpressonline.com/components/com_magazine/layouts/images/tr.gif) 100% 0 no-repeat; } .rbtop div { background: url(http://www.mcpressonline.com/components/com_magazine/layouts/images/tl.gif) 0px 0px no-repeat; } .rbcontent { margin:0pt 15px; } .rbbot { background: url(http://www.mcpressonline.com/components/com_magazine/layouts/images/br.gif) 100% 100% no-repeat; } .rbbot div { background:url(http://www.mcpressonline.com/components/com_magazine/layouts/images/bl.gif) 0 100% no-repeat ; } .clear {font-size: 1px; height: 1px} </style></td></tr><tr><td><div class='box_author' ><table cellpadding='0' cellspacing='2' width='100%'> <tr><td valign='top' rowspan='4' align='center'> <br /><a href='/november-21-2008-vol-5-issue-46/christopher-devous/view-all-articles.html?Itemid=' >Christopher Devous</a></td></tr> <tr><td></td><td valign='top'><span class='heading'>About the Author:</span></td></tr> <tr><td></td><td valign='top'><span class='text'></span></td></tr></table></div><div class='art_bottom'><br /></div> <table align="center" class="pagenav"> <tr> <th class="pagenav_prev"> <a href="/programming/web-languages/porting-perl-and-python-to-iseries.html">< Prev</a> </th> <td width="50">   </td> <th class="pagenav_next"> <a href="/programming/web-languages/a-summer-reading-list-for-web-programmers.html">Next ></a> </th> </tr> </table></td> </tr> <tr> <td class="modifydate"> Last Updated on Thursday, 31 January 2002 18:00 </td> </tr> </table> <span class="article_separator"> </span> <div class="vbcomment box_author"> <div class="vbcomment_row"> <div class="vbcomment_author">MC Press Web Site Staff</div> <div class="vbcomment_text">** This thread discusses the Content article: <a href=http://www.mcpressonline.com/index.php?option=com_content&view=article&id=3949>Serving Spooled Files to the Web</a>0</div> </div> <div class="vbcomment_row"> <div class="vbcomment_author">gopinathm</div> <div class="vbcomment_text">Christofer Recently I have come across your article,Serving Spooled Files to the Web in MCPRESSONLINE.I tried doing it. But I am met with a proble.I did the CPYTOPCD Command. IT worked.In IFS It Looks As I want, But If I press SHIFT + F8 Control goes to 3242 length even thogh Report is 132 length. Moreover When I did FTP it to a PC, The Spool file part shown where every record appended to each other. THere is no record break in the spool file part.Rest It looks good. Can tell me what wrong I am doing. Thanks M.K.Gopinathan</div> </div> Please login to make comments.</div> <form method="post" action="http://www.mcpressonline.com/programming/web-languages/serving-spooled-files-to-the-web.html"><span class="content_rating">User Rating:<img src="/images/M_images/rating_star.png" alt="" /><img src="/images/M_images/rating_star.png" alt="" /><img src="/images/M_images/rating_star.png" alt="" /><img src="/images/M_images/rating_star.png" alt="" /><img src="/images/M_images/rating_star.png" alt="" /> / 9</span> <br /> <span class="content_vote">Poor<input type="radio" alt="vote 1 star" name="user_rating" value="1" /><input type="radio" alt="vote 2 star" name="user_rating" value="2" /><input type="radio" alt="vote 3 star" name="user_rating" value="3" /><input type="radio" alt="vote 4 star" name="user_rating" value="4" /><input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />Best <input class="button" type="submit" name="submit_vote" value="Rate" /><input type="hidden" name="task" value="vote" /><input type="hidden" name="option" value="com_content" /><input type="hidden" name="cid" value="3949" /><input type="hidden" name="url" value="http://www.mcpressonline.com/programming/web-languages/serving-spooled-files-to-the-web.html" /></span></form> <div style="margin-left:5%; margin-right:5%; text-align:left;"><hr color="maroon" width="85%"></hr><div id="relateditemtitle">Related Articles:</div><ul id="relateditemlist"> <li><span class="extranews_date">02/09/2011</span> - <span class="tooltip_extranews" Title="<div style='color:#000000;padding:4px;z-index:1000;background:#fcfcfc;border:#0000FF solid 1px;'><div><div style='color:#ffffff;background:#6e765f;padding:2px;'>Build Snappy Web Apps with HTML, DHTML, CSS, and JavaScript</div><div style='padding:2px;' ><div><img src="http://www.mcpressonline.com/images/resized/images/stories/authorphotos/jan_jorgensen_100_95.jpg" alt="Build Snappy Web Apps with HTML, DHTML, CSS, and JavaScript" align="left" style="margin: 0px 6px;"/></div><div style='z-index:1000;height:100px;' class='extranews_tooltip'>How poor are they that have not patience! —William Shakespeare Written by Jan Jorgensen Faster, faster, faster! Every day, we are met with these de…</div><div style='clear:both'></div><div style='clear:both'></div></div><div style='clear:both'></div>"><a href="/programming/web-languages/build-snappy-web-apps-with-html-dhtml-css-and-javascript.html">Build Snappy Web Apps with HTML, DHTML, CSS, and JavaScript</a></span></li> <li><span class="extranews_date">06/28/2010</span> - <span class="tooltip_extranews" Title="<div style='color:#000000;padding:4px;z-index:1000;background:#fcfcfc;border:#0000FF solid 1px;'><div><div style='color:#ffffff;background:#6e765f;padding:2px;'>Choosing a Web Language? Choose Wisely.</div><div style='padding:2px;' ><div><img src="http://www.mcpressonline.com/images/resized/images/stories/authorphotos/joe_pluta_100_100.jpg" alt="Choosing a Web Language? Choose Wisely." align="left" style="margin: 0px 6px;"/></div><div style='z-index:1000;height:100px;' class='extranews_tooltip'>It seems like new Web language options appear every time you blink. The one you choose can make or break your Web development project, and this articl…</div><div style='clear:both'></div><div style='clear:both'></div></div><div style='clear:both'></div>"><a href="/programming/web-languages/choosing-a-web-language-choose-wisely.html">Choosing a Web Language? Choose Wisely.</a></span></li> <li><span class="extranews_date">03/10/2010</span> - <span class="tooltip_extranews" Title="<div style='color:#000000;padding:4px;z-index:1000;background:#fcfcfc;border:#0000FF solid 1px;'><div><div style='color:#ffffff;background:#6e765f;padding:2px;'>Create "Steady Headers" in Your HTML Tables</div><div style='padding:2px;' ><div><img src="http://www.mcpressonline.com/images/resized/images/stories/authorphotos/giovanni_perotti_100_100.jpg" alt="Create "Steady Headers" in Your HTML Tables" align="left" style="margin: 0px 6px;"/></div><div style='z-index:1000;height:100px;' class='extranews_tooltip'>Do your users get frustrated when they scroll down through tables and can't see the headers? You can fix that! Written by Giovanni B. Perotti Usually,…</div><div style='clear:both'></div><div style='clear:both'></div></div><div style='clear:both'></div>"><a href="/programming/web-languages/create-steady-headers-in-your-html-tables.html">Create "Steady Headers" in Your HTML Tables</a></span></li> <li><span class="extranews_date">01/25/2010</span> - <span class="tooltip_extranews" Title="<div style='color:#000000;padding:4px;z-index:1000;background:#fcfcfc;border:#0000FF solid 1px;'><div><div style='color:#ffffff;background:#6e765f;padding:2px;'>Considering the World Beyond WebSphere</div><div style='padding:2px;' ><div><img src="http://www.mcpressonline.com/images/resized/images/stories/authorphotos/tom_snyder_100_100.jpg" alt="Considering the World Beyond WebSphere" align="left" style="margin: 0px 6px;"/></div><div style='z-index:1000;height:100px;' class='extranews_tooltip'>Evaluate your IBM i GUI options. Compare RPG, PHP, .NET, and Java. Written by Tom Snyder If you are a developer on the IBM i, you probably realize tha…</div><div style='clear:both'></div><div style='clear:both'></div></div><div style='clear:both'></div>"><a href="/programming/web-languages/considering-the-world-beyond-websphere.html">Considering the World Beyond WebSphere</a></span></li> <li><span class="extranews_date">04/08/2009</span> - <span class="tooltip_extranews" Title="<div style='color:#000000;padding:4px;z-index:1000;background:#fcfcfc;border:#0000FF solid 1px;'><div><div style='color:#ffffff;background:#6e765f;padding:2px;'>Zend Releases Community Edition of Zend Server</div><div style='padding:2px;' ><div><img src="http://www.mcpressonline.com/images/resized/images/stories/authorphotos/chris_smith_100_100.jpg" alt="Zend Releases Community Edition of Zend Server" align="left" style="margin: 0px 6px;"/></div><div style='z-index:1000;height:100px;' class='extranews_tooltip'>The next-generation PHP stack for Windows and Linux gives IBM i developers a way to run new applications easily in-house or on a laptop without charge…</div><div style='clear:both'></div><div style='clear:both'></div></div><div style='clear:both'></div>"><a href="/programming/web-languages/zend-releases-community-edition-of-zend-server.html">Zend Releases Community Edition of Zend Server</a></span></li> </ul> <div id="prev_next_buttom" align="center"></div><hr color="maroon" width="85%"></hr></div> </div> </div> </td> <td align="left" valign="top"> <div id="col2"> <div id="legend" style="clear:both;"> </div> <div id="ad300_1" style="clear:both;"> <div class="moduletable"> <!-- /mod_php version 1.0.0.Alpha1-J1.5 (c) www.fijiwebdesign.com --> <iframe width="336" height="280" noresize scrolling=No frameborder=0 marginheight=0 marginwidth=0 src="http://rotator.adjuggler.com/servlet/ajrotator/278606/0/vh?z=mcpress&dim=224432&pos=14"><script language=JavaScript src="http://rotator.adjuggler.com/servlet/ajrotator/278606/0/vj?z=mcpress&dim=224432&pos=14&abr=$scriptiniframe"></script><noscript><a href="http://rotator.adjuggler.com/servlet/ajrotator/278606/0/cc?z=mcpress&pos=14"><img src="http://rotator.adjuggler.com/servlet/ajrotator/278606/0/vc?z=mcpress&dim=224432&pos=14&abr=$imginiframe" width="336" height="280" border="0"></a></noscript></iframe> <!-- mod_php version 1.0.0.Alpha1-J1.5/ --> </div> </div> <div id="popular" style="clear:both;"> <div class="moduletable"> <h3>MOST POPULAR</h3> <!-- JoomlaWorks "Tabs & Slides" Module (v1.0) starts here --> <div class="jwts_tabber" id="tabsnslides"> <div class="jwts_tabbertab" title="ARTICLES"><h2><a href="javascript:void(null);" name="advtab">ARTICLES</a></h2><ul class="mostread"> <li class="mostread"> <a href="/programming/rpg/practical-rpg-the-future-of-rpg.html" class="mostread"> Practical RPG: The Future of RPG </a> </li> <li class="mostread"> <a href="/application-software/document-management/what-you-need-to-know-to-convert-spooled-files-to-pdf-and-more.html" class="mostread"> What You Need to Know to Convert Spooled Files to PDF (and More)!</a> </li> <li class="mostread"> <a href="/programming/rpg/dont-be-misled-by-setll-*loval.html" class="mostread"> Don't Be Misled by SETLL *LOVAL</a> </li> <li class="mostread"> <a href="/programming/rpg/how-to-create-compile-and-use-service-programs.html" class="mostread"> How to Create, Compile, and Use Service Programs</a> </li> <li class="mostread"> <a href="/programming/rpg/optimize-your-rpg-code-to-run-faster-using-static-variables.html" class="mostread"> Optimize Your RPG Code to Run Faster Using Static Variables</a> </li> <li class="mostread"> <a href="/programming/sql/practical-sql-three-ways-to-join.html" class="mostread"> Practical SQL: Three Ways to JOIN</a> </li> <li class="mostread"> <a href="/tips-techniques/security/partner-techtip-our-system-administrator-did-what.html" class="mostread"> Partner TechTip: Our System Administrator Did WHAT?</a> </li> <li class="mostread"> <a href="/tips-&-techniques/rpg/techtip-new-in-71-the-scanrpl-built-in-function.html" class="mostread"> TechTip: New in 7.1: The %SCANRPL Built-in Function</a> </li> <li class="mostread"> <a href="/networking/emulation/cool-things-free-open-source-tn5250j.html" class="mostread"> Cool Things: Free, Open-Source TN5250J</a> </li> <li class="mostread"> <a href="/programming/rpg/cool-things-sql-functions-and-list-apis.html" class="mostread"> Cool Things: SQL Functions and List APIs</a> </li> </ul></div><div class="jwts_tabbertab" title="BOOKS"><h2><a href="javascript:void(null);" name="advtab">BOOKS</a></h2><p><span style="font-size: 10pt; color: #000000; font-family: Arial"><strong>Top 10 Best-Selling Titles</strong></span></p> <ol> <li><a href="http://www.mc-store.com/5104.html">Subfiles in Free-Format RPG</a></li> <li><a href="http://www.mc-store.com/5507.html">Control Language Programming for IBM i</a></li> <li><a href="http://www.mc-store.com/5504.html">Programming in RPG IV</a></li> <li><a href="http://www.mc-store.com/5105.html">Advanced, Integrated RPG</a></li> <li><a href="http://www.mc-store.com/5505.html">Mastering IBM i</a></li> <li><a href="http://www.mc-store.com/5085.html">IBM System i APIs at Work</a></li> <li><a href="http://www.mc-store.com/5120.html">RPG TnT</a></li> <li><a href="http://www.mc-store.com/5096.html">The IBM i Programmer's Guide to PHP</a></li> <li><a href="http://www.mc-store.com/5080.html">The Modern RPG IV Language</a></li> <li><a href="http://www.mc-store.com/5061.html">IBM System i APIs at Work</a></li> </ol></div><div class="jwts_tabbertab" title="FORUMS"><h2><a href="javascript:void(null);" name="advtab">FORUMS</a></h2><ol> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21264'>News on IFSTOOL</a> (2557 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21266'>AS/400 RPG Programmer Analyst - Tampa, FL (Contract)</a> (2125 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21268'>I need to transfer a spool file(i.e. compile listing) to a PC file for editing</a> (1862 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21263'>Latest news on HSSFCGI</a> (1673 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21272'>Batch file in as400</a> (1463 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21270'>Trigger bombing on program library</a> (1221 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21276'>Zip/Unzip now, don't wait for 7.1</a> (876 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21283'>PHFA - 2 new Software Developer positions available (IBM i RPG ILE/Microsoft Dotnet)</a> (519 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21278'>The International Freedom of Expression Forum</a> (494 views)</li> <li><a href='http://www.mcpressonline.com/forum/showthread.php?t=21285'>A6005004 - Can't find console</a> (339 views)</li> </ol></div></div> <div class="jwts_clr"></div> <!-- JoomlaWorks "Tabs & Slides" Module (v1.0) ends here --> </div> </div> <div id="ad300_2" style="clear:both;"> <div class="moduletable"> <!-- /mod_php version 1.0.0.Alpha1-J1.5 (c) www.fijiwebdesign.com --> <iframe width="336" height="280" noresize scrolling=No frameborder=0 marginheight=0 marginwidth=0 src="http://rotator.adjuggler.com/servlet/ajrotator/278607/0/vh?z=mcpress&dim=224432&pos=15"><script language=JavaScript src="http://rotator.adjuggler.com/servlet/ajrotator/278607/0/vj?z=mcpress&dim=224432&pos=15&abr=$scriptiniframe"></script><noscript><a href="http://rotator.adjuggler.com/servlet/ajrotator/278607/0/cc?z=mcpress&pos=15"><img src="http://rotator.adjuggler.com/servlet/ajrotator/278607/0/vc?z=mcpress&dim=224432&pos=15&abr=$imginiframe" width="336" height="280" border="0"></a></noscript></iframe> <!-- mod_php version 1.0.0.Alpha1-J1.5/ --> </div> </div> <div id="guide_tabs" style="clear:both;"> </div> <div id="ad300_3" style="clear:both;"> <div class="moduletable"> <br /> <script type="text/javascript"> <!-- google_ad_client = "pub-6907546339095191"; google_ad_width = 300; google_ad_height = 250; google_ad_format = "300x250_as"; google_ad_type = "text"; google_ad_channel = ""; google_ui_features = "rc:6"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> </div> </div> </td> </tr> <!-- End of 2 column layout --> </table> </div> <div id="row2" style="background: #ffffff url(/templates/dt_mcpress/images/mc_row2_bg_top.gif) no-repeat 0 0; padding-top:4px;"> <div id="store_box"> <div class="moduletable">    <b><span style="font-size: 10pt">MC-STORE.COM</span></b> <table border="1" width="100%" cellPadding="0" cellSpacing="0"> <tbody> <tr> <td align="center" vAlign="top"><!-- INSERT BOX1 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278611/0/vh?z=mcpress&dim=278621&pos=19" marginHeight="0" marginWidth="0"></iframe><!-- END BOX1 CODE --></td> <td align="center" vAlign="top"><!-- INSERT BOX2 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278609/0/vh?z=mcpress&dim=278621&pos=20" marginHeight="0" marginWidth="0"></iframe><!-- END BOX2 CODE --></td> <td align="center" vAlign="top"><!-- INSERT BOX3 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278613/0/vh?z=mcpress&dim=278621&pos=21" marginHeight="0" marginWidth="0"></iframe><!-- END BOX3 CODE --></td> <td align="center" vAlign="top"><!-- INSERT BOX4 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278615/0/vh?z=mcpress&dim=278621&pos=22" marginHeight="0" marginWidth="0"></iframe><!-- END BOX4 CODE --></td> <td align="center" vAlign="top"><!-- INSERT BOX5 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278616/0/vh?z=mcpress&dim=278621&pos=22" marginHeight="0" marginWidth="0"></iframe><!-- END BOX5 CODE --></td> <td align="center" vAlign="top"><!-- INSERT BOX6 CODE --><iframe height="238" scrolling="no" width="158" noResize="true" frameBorder="0" src="http://rotator.adjuggler.com/servlet/ajrotator/278617/0/vh?z=mcpress&dim=278621&pos=23" marginHeight="0" marginWidth="0"></iframe><!-- END BOX6 CODE --></td> </tr> </tbody> </table> </div> </div> </div> <div id="footer"> <center> <div class="moduletable"> <script src="/modules/mod_pagepeel_banner/pagepeel_banner/AC_OETags.js"language="javascript"></script> <script type="text/javascript"> /******************************************************************************************** * PageEar advertising CornerAd by Webpicasso Media * Leave copyright notice. * * @copyright www.webpicasso.de * @author christian harz <pagepeel-at-webpicasso.de> *********************************************************************************************/ /* * Konfiguration / Configuration */ // URL to small image var pagearSmallImg = 'http://www.mcpressonline.com/modules/mod_pagepeel_banner/pagepeel_banner/5120_PeelCorner.jpg'; // URL to small pageear swf var pagearSmallSwf = 'http://www.mcpressonline.com/modules/mod_pagepeel_banner/pagepeel_banner/pageear_s.swf'; // URL to big image var pagearBigImg = 'http://www.mcpressonline.com/modules/mod_pagepeel_banner/pagepeel_banner/5120_Peel.jpg'; // URL to big pageear swf var pagearBigSwf = 'http://www.mcpressonline.com/modules/mod_pagepeel_banner/pagepeel_banner/pageear_b.swf'; // Movement speed of small pageear 1-4 (2=Standard) var speedSmall = 4; // Mirror image ( true | false ) var mirror = 'true'; // Color of pagecorner if mirror is false var pageearColor = 'FFFFFF'; // URL to open on pageear click var jumpTo = 'http://editorial.mcpressonline.com/web/mcpdf.nsf/wdocs/5120/$FILE/5120_EXP.pdf' ; // Browser target (new) or self (self) var openLink = 'new'; // Opens pageear automaticly (false:deactivated | 0.1 - X seconds to open) var openOnLoad = false; // Second until pageear close after openOnLoad var closeOnLoad = 5; // Set direction of pageear in left or right top browser corner (lt: left | rt: right ) setDirection = 'lt'; //add by remush var autoopen = 'disable'; var behaviour = 'reload'; /* * Do not change anything after this line */ // Flash check vars var requiredMajorVersion = 6; var requiredMinorVersion = 0; var requiredRevision = 0; // Copyright var copyright = 'Webpicasso Media, www.webpicasso.de'; // Size small peel var thumbWidth = 120; var thumbHeight = 120; // Size big peel var bigWidth = 500; var bigHeight = 500; // Css style default x-position var xPos = 'right'; // GET - Params var queryParams = 'pagearSmallImg='+escape(pagearSmallImg); queryParams += '&pagearBigImg='+escape(pagearBigImg); queryParams += '&pageearColor='+pageearColor; queryParams += '&jumpTo='+escape(jumpTo); queryParams += '&openLink='+escape(openLink); queryParams += '&mirror='+escape(mirror); queryParams += '©right='+escape(copyright); queryParams += '&speedSmall='+escape(speedSmall); queryParams += '&openOnLoad='+escape(openOnLoad); queryParams += '&closeOnLoad='+escape(closeOnLoad); queryParams += '&setDirection='+escape(setDirection); function openPeel(){ document.getElementById('bigDiv').style.top = '0px'; document.getElementById('bigDiv').style[xPos] = '0px'; document.getElementById('thumbDiv').style.top = '-1000px'; } function closePeel(){ document.getElementById("thumbDiv").style.top = "0px"; document.getElementById("bigDiv").style.top = "-1000px"; } function writeObjects () { // Get installed flashversion var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); // Check direction if(setDirection == 'lt') { xPosBig = 'left:-1000px'; xPos = 'left'; } else { xPosBig = 'right:1000px'; xPos = 'right'; } // Write div layer for big swf document.write('<div id="bigDiv" style="position:absolute;width:'+ bigWidth +'px;height:'+ bigHeight +'px;z-index:9999;'+xPosBig+';top:-1000px;">'); // Check if flash exists/ version matched if (hasReqestedVersion) { AC_FL_RunContent( "src", pagearBigSwf+'?'+ queryParams, "width", bigWidth, "height", bigHeight, "align", "middle", "id", "bigSwf", "quality", "high", "bgcolor", "#FFFFFF", "name", "bigSwf", "wmode", "transparent", "allowScriptAccess","always", "type", "application/x-shockwave-flash", 'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab', "pluginspage", "http://www.adobe.com/go/getflashplayer" ); } else { // otherwise do nothing or write message ... document.write('no flash installed'); // non-flash content } // Close div layer for big swf document.write('</div>'); // Write div layer for small swf document.write('<div id="thumbDiv" style="position:absolute;width:'+ thumbWidth +'px;height:'+ thumbHeight +'px;z-index:9999;'+xPos+':0px;top:0px;">'); // Check if flash exists/ version matched if (hasReqestedVersion) { AC_FL_RunContent( "src", pagearSmallSwf+'?'+ queryParams, "width", thumbWidth, "height", thumbHeight, "align", "middle", "id", "bigSwf", "quality", "high", "bgcolor", "#FFFFFF", "name", "bigSwf", "wmode", "transparent", "allowScriptAccess","always", "type", "application/x-shockwave-flash", 'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab', "pluginspage", "http://www.adobe.com/go/getflashplayer" ); } else { // otherwise do nothing or write message ... document.write('no flash installed'); // non-flash content } document.write('</div>'); } //added by REMUSH //for Set cookies </script> <!-- PagePeel Banner - http://www.templateplazza.com --> <script type="text/javascript"> writeObjects(); </script> </div> <div class="moduletable"> <p align="center"><a href="http://www.mcpressonline.com/index.php" target="_self">Home</a> | <a href="http://www.mcpressonline.com/publications.html" target="_self">Publications</a> | <a href="http://www.mcpressonline.com/news/?view=newsportal" target="_self">News</a> | <a href="http://www.mcpressonline.com/component/option,com_jevents/Itemid,2235/task,month.calendar/view,month/">Events</a> | <a href="http://www.mcpressonline.com/buyers-guide/">Buyer's Guide</a> | <a href="http://www.mcpressonline.com/forums/">Forums</a> | <a href="http://www.mcpressonline.com/videos">Videos</a> | <a href="http://www.mcpressonline.com/most-popular-items-today.html" target="_self">Popular</a> | <a href="http://www.mcpressonline.com/index.php?option=com_ijoomla_archive&task=archive&Itemid=1740">Archive</a> | <a href="http://www.mc-store.com/" target="_blank">Bookstore</a></p> <p align="center"><a href="http://www.mcpressonline.com/index.php?option=com_content&view=article&id=140">© Copyright 2012 MC Press Online, LLC</a> | <a href="http://www.mcpressonline.com/index.php?option=com_content&view=article&id=141">Privacy Policy</a> | <a href="http://www.mcpressonline.com/component/option,com_ijoomla_archive/Itemid,995" target="_self">Search</a> | <a href="http://www.mcpressonline.com/rss" target="_self">RSS</a> | <a href="http://www.mcpressonline.com/index.php?option=com_jsupport&Itemid=809">FAQ</a> | <a href="http://www.mcpressonline.com/index.php?option=com_content&view=article&id=139">Contact Us</a> | <a href="http://www.mcpressonline.com/index.php?option=com_content&view=article&id=137">Write For Us</a> | <a href="http://www.mcpressonline.com/editorial-review-board.html">Editorial Review Board</a> | <a href="http://www.mcpressonline.com/index.php?option=com_content&view=article&id=138">Advertise</a> | <a href="http://www.mcpressonline.com/index.php?Itemid=903">Site Map</a></p> </div> </center> </div> </div> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-420936-1"; urchinTracker(); </script> </body> </html>