An Application Environment for HTML

Robert K. Thralls
Contractor
WWWonder
Personal URL (All About Bob)

Robert K. Thralls
Elberfelder Str. 150
45549 Sprockhoevel 1
Germany
thralls@ibm.net

Keywords
HTML HTTP FORM authoring protocol application WEB WWW

Table of Contents


Abstract

Systems that operate as WEB Applications need three essential guidelines in order to succeed. These three guidelines define for a user the look and feel of the application. For many applications, the correspondence of HTML Fill-out FORMs and backend CGI Compliant programs remains at one to one. One Simple FORM and one simple program do not suffice in large scale applications with multiple step transactions unsuitable for simple hypertext; one program outputs an HTML fill-out FORM for the next program. When faced with this level of complicity, one needs to institute the three basic guidelines. First, an application must project a consistent user interface. Any and all interaction between man and machine must be performed in the same manner each and every time. Similar operations operate similiarly. Above all, the user must feel a high level of comfort with this Fill-out FORM interface. Secondly, programmers do not write HTML; programmers write programs that encapsulate data with appropriate and consistent HTML encoding. Generally, one needs a format for description of a screen, its purpose and functionality. From this description, programs generate an HTML page that conforms to the interface standards. Also, programs generate programs from that description to handle FORM data, if any, on that HTML page. Thus, the dynamics of the application hinge on the combination of data and logic (application) rather than data alone (hypertext). Third, these applications must rely on HTML for carrying the bulk of user interface processing. Just as any application relies on a 4GL for user interface, WEB applications must rely on HTML to bear that burden, as well. Thus, WEB applications look for more flexibility and functionality from HTML as a language and HTTP as a protocol. This paper demonstrates the implemention of the three golden rules. It explores the pitfalls of HTML/HTTP in WEB application development and offers suggestions where modifications become useful.

Wherever possible, the author utilized examples from an HTML Application called WWWonder&cw;. To access this WEB Application, press here . The application lives behind a firewall, which prohibits access from many sites. A demonstration features the WWWonder system scheduled during Workshop G of the Third International WWW Conference. The CDC plans to move the system outside the firewall later this year.


The Consistent Interface

A consistent interface begins with a good screen definition language. Many screen languages exist with a well thought out structure. A philosophy that follows programmers to the grave nevers allows them to re-invent the wheel. One finds it difficult to choose between commonly used 4GLs and other Screen generators. For the sake of porting MS-Windows applications, MS-Windows Resource (.rc) files prove well structured for a product base. Once chosen, the screen definition language needs processing to separate it from its native environment. The MS-Windows Resource Compiler proves useless to us to parse the files. We write our own resource compiler that produces HTML and screen specific CGI backend source code, and a makefile.

The Screen Definition File

Lexigraphically converted into usable HTML and meaningful 'C' source code, the screen definition file becomes our application interface. Since we convert programatically, we eliminate inconsistencies in the user interface definition. Like items always work alike. For instance, in a MS-Windows Resource file, statements such as "DIALOG", "EDIT" and "RADIOBUTTON" always convert directly to <FORM...>, <INPUT...>, and <INPUT TYPE="radio"...> respectfully. This ensures that the user interface always takes on the same look and feel.

The Key to Consistency

The key to consistency lies within the application's existing user base. The selection of the Screen Definition Language and "Look and Feel" standards already exist for most applications. The effort remaining focuses upon building a parser that converts current screens into HTML and hooks into backend source code to perform the normal application functionality. Once achieved, WYSIWIG screen building tools available for the chosen file format become the preferred manner for HTML FORMs definition. By keeping these development tools alive, one bridges the gap between an existing application and the new WEB Application. Current users make the trasition to the WEB environment effortlessly. New users that the WEB brings can utilize the same on-line HELP functions that currently exists (with minor editing). This key to consistency allows users to migrate along with the application.


Code Generation

HTML code generation from a Screen Definition Language like MS-Windows Resources takes a steady hand to shape into place. Most Screen definitions allow one to place fields precisely where one would like it to be displayed. HTML does not really allow for this type of granularity. Until HTML allows for a PREformatted Fill-out FORM, this nearly impossible task of keeping the HTML viewer code from squashing everything to left side of the screen seems virtually hopeless. Other problems arrise from attempting to mimick MENU, DATE, and PUSHBUTTON functonality. Given the limitations of HTML and the control over the viewer end of things, attempting to deal with a POPUP DIALOG BOX makes for some interesting backend code. Limitations aside, about 90% of most Screen Definition Languages can easily translate to a combination of HTML and SGI backend code. For instance, DATE validation is easy as an HTML INPUT Field with code associated with that field to PARSE and VALIDATE the input string. Even under the current limitation of FORMs processing in HTML, don't hesitate to implement with a combination of simple HTML and complex string massaging algorithms on the backend. A key to implementation of resources like DATE are to augment HTML with appropriate field validation code before allowing the backend to accept the entire contents of the FORM.

Auto Generating HTML

For Simplicity sake, an example would help greatly to illistrate the process. First, let us take a MS-Windows compatible resource file and crunch it into HTML.

The Prevention Guidelines Data Set Resource File
The Prevention Guidelines HTML FORM
The Prevention Guidelines HTML Image

Note that although the Resource file is very complex, the HTML FORM generates as quite simple. The large portion of defined processing must push to the backend program because no HTML language allows for field checking nor FORM validation. Thus, the backend picks up the slack of this simple HTML FORM to complete the processing as directed by the Resource file.

Auto Generating CGI Compliant Backends

There are several steps to Generating CGI Compliant Backends. First, assemble a list of variables and declare some logical space for them. Then, map the logical names of variables to the physical space allocated. One may also want to check those variables that have only a few valid values (RADIOBUTTONS are either "ON" or "OFF" and can have an alternate value associated with either 'ON' or 'OFF'; like 'Yes' or 'No') and convert to those values, if necessary. Again, lets look at a concrete example to demonstrate.

The Prevention Guidelines Data Set Resource File
The Prevention Guidelines Header (.h) File
The Prevention Guidelines SGI Source (.c) File

Online Transactions

The SGI Backend program can easily handle On-line transactions such as data base look ups. The output from this type of backend program simply becomes the input to Generating the next HTML page. This next page can display final results of processing or become another auto generated HTML page. A good example of the Chaining of Fill-out FORMs resides in the following example of creating a dynamic list of resources to convert, the user picks one and the next FORM is generated from that selection. In the following example, the user selects "Prevention Guidelines" and submits the FORM, he is handed a freshly genererated Prevention Guidelines HTML FORM and a SGI Compliant backend also generated awaits a submission.

The Data Set Selection Resource File
The Data Set Selection HTML FORM
The Data Set Selection HTML Image
The Prevention Guidelines HTML FORM
The Prevention Guidelines HTML Image

Batch Transactions

There are some cases that require off-line or batch processing before a transaction can complete. Batch processing may mean that one services requests to Database Systems that are not always reachable (like some MAINFRAMEs), or in such high demand that one must "Batch" requests to it (much like an e-mail message). Databases that operate in this mode easily fit the HTML structure of doing things. Since users come and go and may never be heard from again, the amount of time between the GET of a FORM and the submit of the FORM data to the backend is variable. This time gap may span any amount of time without effecting system integrity. Therefore, the amount of time between the submission of the request and the processing of the output of the SGI program can also be equally spuradic without effecting system integrity. This allows the user to submit querier to database systems that may or may not be on-line and still have those requests processed as soon as possible. Instead of returning the data immediately, the data can be stored in a temp file, awaiting further processing when the user comes back to check the progress of his query or transaction.

Multiple Step Transactions

Just as off-line or batch mode operations work, so does the multiple step transaction. The user can perform steps of a transaction at variable time intervals without damage to system integrity. Made possible by allocating space on the WEB server to each individual user, transaction space can be considered temporary, depending on the application. But, the capability of performing muliple step and long term transactions via a modeless connection such as HTTP depends on local storage of transaction data by the WEB server.

Other related enhancements to the Server code include the ability to specify a user subdirectory on a POST (allow "EXEC NAME/*/* filepath/*/*"in rules config file). This allows application to serve many users that have some diskspace allocated to them for intermediate transaction files, temporary files, specific HTML Application FORMs and SGI Backends generated on the fly for them. This has also been the integral hub allowing for multi-stage transactions and for batch mode queries.

Output that becomes Input

To continue with the Prevention Guidelines example, the first program generated a query against a MAINFRAME database, the results were returned. The result of the first query serve to build the next screen in the chain; it matters not on-line or batch mode, what matters is that one application writes the input for the next application. Lets look at the temporary results file from the first Prevention Guidelines query and the next Resource file and HTML FORM to get an idea of work flow. Remember, requardless of whether data lives on-line or batched the steps remain the same in the assembling of the next step in the transaction.

The VARS file output from previous transaction step
The Next Prevention Guidelines Resource File
The Next Prevention Guidelines HTML File
The Next Prevention Guidelines HTML Image

Backends That Build Backends

The same example from earlier illistrates how one application is driven to produce another application in the Chain. Note that the selection of the resource in the list box causes that resource to be converted to HTML and a backend program.

The Data Set Selection Resource File
The Data Set Selection HTML FORM
The Prevention Guidelines HTML FORM
The Prevention Guidelines HTML Image


HTML/HTTP Modifications

This portion of the document means to provide feedback to those that develope the HTML language and viewers and HTTP protocols and servers. This information comprises the set backs that WEB Application implementors face as they find themselves stuck in the middle, lodged between HTML and HTTP.

The remainder of this document reflects the needs of HTML applications. Without these type of enhancements, one can truely offer identicle fuctionality of complex applications through the WEB as stand alone applications. Admitedly, some enhancements only make it easier for the application programmer and/or are designed to push processing off to the client site. However, the fact remains that with the limited set of HTML Fill-out FORM functionality, the application suffers and the user tires of the interface. The Interface clunks next to specific client applications that perform the same functionality. This section brings to light what many WEB Applications must work around.

This section takes the opinion that one does not write specialty viewers for the client end. Many WEB applications will have tens of thousands of users, all with various hardware and system software platforms; thus, another major undertaking to develop a specialty viewer for cross platform developement. These ideas offer the platform independence, if and only if more brains are placed in the HTML viewers through augmented language and more aspects of HTTP are controllable via HTML and CGI.

Application Menu (HTML Programmable Access)

Applications often need the MENU to navigate through functionality. Currently, if a WEB application needs MENU functionality, it is centralized on an HTML form. However, a better WEB Application interface would have the application's MENU displayed at all times with the viewer's menu system. One needs a way to describe in HTML a programable menu bar. Descriptions of menu bars contain METHOD and URL; Menus belong to FORMs and therefore should reflect change if there are multiple FORMs in a HTML document.

Ability to PREformat an HTML FORM

Applications often have very specific types of screen formating in mind for FORMs. Since this is part of the look and feel of a particular application, formatting within a FORM should be more extensible to the programmer. HTML almost fulfills this request, but different viewer handle preformatted FORMs in various ways, and some very poorly. One suggests to make <PRE WIDTH=80> the standard for this and viewers compensate for any extra widths added by borders and scrollbars. Otherwise, augment HTML with a <FRAME> style markup tag to physically locate (contain) certain groups of input fields together. For instance if one wanted a screen partitioned into a left and right side, one uses <FRAME> to group like fields together and it is up the viewer to ensure that those fields are placed togetheras a top and bottom; thus, at least the fields are located in proximity of each other. This mainly prevents the viewer from dropping significant whitespace and making inappropriate wrap decisions that make for a bad user interface. Any defined method of predetermined placement of individual HTML tags would improve the situation

Multi-Level INPUT Fields

Multi-level INPUT fields delicately integrate most applications. Allowing for user definable data types. Mostly used for database type lookups, pop-up query forms populate back to the original form upon completion. These type of application specific data fields and functionality make for superior quality applications. Thus, allowing users to browse for data to use, rather than pulling it from thin air or remembering it from somewhere else. Perhaps, if true CUT and PASTE were implemented in ALL HTML Viewers, then this would not be an issue. However, the needs of complex applications require some type of functionality similar to this.

Complex Data Entry (Popup/Programmatic Query)

Making data entry complex for users is not the intention of the programmer, but in HTML fill-out FORMs, much data entry becomes a chore compared to a stand alone application. Thus, the pop-up FORM that can paste back to the original FORM field in a preceeding (or current) FORM needs to be implemented in HTML. For example, to allow users to browse complex mortality and morbidity codes from data bases, rather than entering them as a FREETEXT item in a plain jane INPUT field. This empowers the user with more flexibility and far more data entry accuracy.

HTML Fill-out FORM Field Population

Perhaps a twist on the above Pop-up data entry FORM, a Data <PASTE> enhancement could allow empty FILL out FORMs to be populated indepenently of the original file. The HTML page with a FORM is loaded by the client and is originally empty. A separate header to separate the FORM data from the FORM immediately follows to reference the data back to the FORM fields; thus allowing dynamic data population of a static HTML FORM.

Populate an empty INPUT Field

A mime header could identify FORM data for an empty loaded FORM on a page. The data from this section could easily populate the empty fields currently displayed.

Dynamically Update an INPUT Field

To make a real twist on this topic, allow updates/replacement data for any previously loaded FORM. Any backend could easily update previously loaded FORMS to reflect the current status. For instance, stock quotes could be updated coninously while the user viewed other FORMs, but when he JUMPS back to the previous FORM, it does not need to be reloaded, it has already been updated with the current information since the last time he communicated with that server. The protocol remains modeless and USER driven, but is enhanced to allow for the altering of previously loaded forms (automagically) so that the USER is not totally depended upon to drive the entire application (request/response). This would be kin to Dynamic Data Exchange (DDE) or similar atomic updates. One could go so far as to allow the client to accept socket connections for these type updates. One could even see the dramatic reorganization of HTML forms. Instead of a stack of Documents that one jumps forward and back to, One sees a desktop where some Documents are Hyper Linked together and thumbnails of those documents are neatly stacked in staggered piles while others float, sort of half-open, revealing real-time updates of stock quotes.... Just a thought. Hmm... Maybe next week...

Intelligent Front end Processing

This section devotes some words to makeing the HTML viewer FORM smart via mini field "POST" of field data at strategic times or HTML allows the Viewer to actually perform that task on its own...

Type Checking

This wish for an HTML extisible Type Checker raised some eye brows last time mentioned. The concept is as simple as sscanf formating. As an example, one may want string types of four characters with alpha as first char and then followed by 3 nuimeric chars; the alpha char can be an A, X or a B. This type of user defined Type is essential for offloading error checking in HTML FORMS from the WEB Server (CGI Backend program).

Field Validation

Sometimes the standard field validation is not enough. Focus of the user is what is important here. The user is concentrating on a field, not the entire FORM. There is focus problem when the user must redirect his attention to work he thought was already completed. I suggest CGI Hooks, just as many 4GLs allow programmers to perform specific type checking and Field validation when the user set the focus on that field control, during the data entry process, and immediately when the user leaves that field.

FORM Validation

Preferably, the Server performs more effieciently if FORMs are pre-validated, but at this time the relationship between the fields is the business of the CGI Backend program. Another enhancement that would help offload processing to the client and reduce bandwith usage from data entry mistakes, is to augment HTML with the ability to make some field relationship decisions about a FORM and prevent multiple submissions of all FORM data to correct the data entry errors.

"SUBMIT if A < B"

'if DATE_1 > DATE_2 then "message:OK;You Can't Finish Before You Get Started"'
That simple statement holds the key to distributed processing within HTML Applications. Of course, the philosophy of 'get a bigger server' seems to be catching like wild fire, but some of us are on a very teany, tiny budget. If the user is going to wait for some type of special field or form validation, I'm sure he'd rather wait for his machine to process rather than waiting for a CPU starved server to process the data only to notify him of an entry error.

Downloadable Clickable Image Support

Another far flung idea is to offload Clickable Image support directly to the client. Along with the image, the config file is also downloaded. This eleviates much extraneous communications just to find out what the user want to do. Anytime one has the chance to make the client CPU do the work, one should jump at that opportunity. Bandwidth for many is at a premium and server CPU cycles need to be conserved, as well.

POST Capability from Clickable Image

One interesting idea that WWWonder has implemented is the ability to POST from clickable images. This allows the image to not simply be hypertext, but actually run a program on the server and produce work, not just view it. The system generates clickable image config files with USER information imbeded as normal (hidden field), this data is passed to the backend and it produces the next FILL-OUT FORM in sequence. Thus, a handy menu system much like any graphical system around; one can overlay HTML pages with simillar images to give the illusion of a drop down MENU system.

Other related enhancements to the Server code include the ability to specify a user subdirectory on a POST (allow "EXEC NAME/*/* filepath/*/*"in rules config file). This allows application to serve many users that have some diskspace allocated to them for intermediate transaction files, temporary files, specific HTML Application FORMs and SGI Backends generated on the fly for them. This has also been the integral hub allowing for multi-stage transactions and for batch mode queries.

Submit NAME (FUNCTION keys)

One nice to have attribute that goes along with the SUBMIT attribute would be to have the NAME attribute passed to the SGI Backend or placed in the Environment somehow. I think this requires a slight modification to HTTP, but this would save much clutter on the Server side with links to the same executable to allow the different functions ie: Submit, Help, Save, Upload, Download, etc. Currently, each function needs to be referenced in HTML to different SGI Backends, although it is the same executable linked to many filenames. The executable then checks to see by what name it executes as (argv[0]) and hence, it knows the function. Unfortunately executables are generated on the fly in most cases, and, although executables remove themselves after running, there is still the requirement of cleaning up external symbolic links. This type of mess can be eleviated easily by the addition of the NAME of the submit button (INPUT).

Encrypted POST data transmission

User Authentication and Encryption needs to be integrated into both HTML and HTTP. First and foremost, all data transmitted via FORM should be ENCRYPTED: ie: < FORM ENCRYPTED ...> Simple and elegant, KEYS can be configured at both sites appropriately. This allows for encrypted authentication to be controlled by the SGI Backend, which may want the USER Database managed by a real Database Engine, especially if one has 13,000 plus registered users, and any number of anonymous users (still requiring restricted accounts). To have the entire Customer Service Staff adding and deleting users, changing passwords, people logging in and out, etc.... Too much of a bottle neck, but perhaps the largest problem occurs when some applications exist already, and the user database lives on its own machine and HTTP is but only one mode of communication in effect (we have SPX/IPX, Proprietary ASYNC, TCP/IP and HTTP) with several different client applications (again, we have WONDER MainFrame, WONDER/PC, WWWonder, and a barage of windows applications for the WAN). Therefore, there needs to a methodology that is accessible via HTML to send data encrypted or plaintext, and a SGI way of decrypting the data input stream (or have it done by the server automagically before envocation).


Tables


The Data Set Selection Resource File


#include "style.h" #include "basic.h" MainMenu MENU BEGIN POPUP "Re~quests" BEGIN MENUITEM "~New...", IDM_DATABASE MENUITEM "~Old...", IDM_OLDREQ END POPUP "~Responses" BEGIN MENUITEM "~Open...", IDM_OPEN MENUITEM "~Download All", IDM_ALL MENUITEM SEPARATOR MENUITEM "~Clear View Area", IDM_NEW MENUITEM "~Save As...", IDM_SAVEAS MENUITEM "Save As ~Text...", IDM_SAVETEXT MENUITEM SEPARATOR MENUITEM "~Print Document", IDM_PRINT MENUITEM "P~rinter Setup...", IDM_PRNSET END MENUITEM "~Table/Graph!", IDM_ANALYSIS MENUITEM "~Mail!", IDM_MAIL POPUP "~Utilities" BEGIN MENUITEM "External ~Program...", IDM_PROGMAN MENUITEM "Delete ~Files...", IDM_DEL MENUITEM "Change C~olors...", IDM_ENVIRON MENUITEM "Communication ~Setup...", IDM_SETUP MENUITEM "~Groups...", IDM_GROUPS MENUITEM "~Update System...", IDM_UPDATE // MENUITEM "~Interface Preferences...", IDM_ENTER MENUITEM SEPARATOR MENUITEM "~Disconnect from CDC", IDM_HANGUP MENUITEM "Change Pass~word...", IDM_CHNGPASS MENUITEM "~Restrict Site...", IDM_RESTRICT END MENUITEM "E~xit!", IDM_EXIT POPUP "F1 = ~Help" HELP BEGIN MENUITEM "~About...", IDM_ABOUT MENUITEM "~How Do I...?", IDM_RANDOM_HELP MENUITEM "~User Support Line...", IDM_RANDOM_HELP+1 MENUITEM "Useful ~Keys...", IDM_RANDOM_HELP+2 MENUITEM "~General Help...", IDM_RANDOM_HELP+3 MENUITEM "~Caveat...", IDM_RANDOM_HELP+4 END END DataSet DIALOG 14, 8, 52, 12 CAPTION "New Request" STYLE WS_SHADOW BEGIN LISTBOX "~Data Sets", IDD_LIST, 16, 10, 48, 7 LBS_NOTIFY | LBS_SORT PUSHBUTTON "~Open", IDOK, 21, 18, 8, 1 BS_DEFAULT | WS_BORDER PUSHBUTTON "~Help", IDD_HELP, 35, 18, 8, 1 WS_BORDER PUSHBUTTON "~Cancel", IDCANCEL, 49, 18, 10, 1 WS_BORDER END [remainder of file deleted]


The Data Set Selection HTML FORM


New Request

New Request

Data Sets


HTML generated from windows resource file: basicnew.rc Please mail comments to
rbt5@wonder.em.cdc.gov

CDC WWWonder

RC/HTML Conversion System Version: 3.01 Alpha

User: RBT5 Remote IP Address: xxx.xxx.xxx.xxx



The Prevention Guidelines Data Set Resource File


#include "style.h" #include "basic.h" Prev DIALOG 0, 0, 79, 24 CAPTION "Prevention Guidelines Search Criteria--Press F1 for Help" STYLE WS_SHADOW BEGIN TEXT "Co~mment:", 11, 4, 2, 31, 1 WS_GROUP EDIT "", 2001, 15, 2, 42, 1 ES_MARGIN TEXT "~Filename:", 11, 4, 3, 31, 1 WS_GROUP EDIT "", 2002, 15, 3, 10, 1 ES_MARGIN TEXT ".REQ/PCW", 11, 25, 3, 20, 1 FRAME "I want to search by...", 11, 4, 5, 72, 3 RADIOBUTTON "~Primary subject", 2003, 5, 6, 32, 1 WS_GROUP | WS_TABSTOP RADIOBUTTON "Specific ~word/phrases",2004, 40, 6, 37, 1 LISTBOX "Search for Guidelines whose primary su~bject is...",2005,4,9,72,8 WS_GROUP | LBS_NOTIFY TEXT "Search for ~Guidelines with the following specific words/phrases:",12,4,9,65,1 WS_GROUP | WS_DISABLED | WIN_HIDDEN EDIT "", 2006, 4, 11, 32, 1 ES_MARGIN | WS_DISABLED | WIN_HIDDEN TEXT "or", 13, 38, 11, 2, 1 WS_DISABLED | WIN_HIDDEN EDIT "", 2007, 43, 11, 32, 1 ES_MARGIN | WS_DISABLED | WIN_HIDDEN TEXT "AND", 14, 38, 12, 3, 1 WS_DISABLED | WIN_HIDDEN EDIT "", 2008, 4, 13, 32, 1 ES_MARGIN | WS_DISABLED | WIN_HIDDEN TEXT "or", 15, 38, 13, 2, 1 WS_DISABLED | WIN_HIDDEN EDIT "", 2009, 43, 13, 32, 1 ES_MARGIN | WS_DISABLED | WIN_HIDDEN RADIOBUTTON "...anywhere in the ~document",2010, 5, 15, 32,1 WS_GROUP | WS_TABSTOP | WIN_HIDDEN RADIOBUTTON "...in the document title ~only",2011,40,15,37,1 WIN_HIDDEN TEXT "--AND--" 11, 35, 17, 7, 1 TEXT "(LEAVE BLANK TO INCLUDE ENTIRE RANGE)",11,5,20,37,1 TEXT "mm / dd / yy", 11, 45, 20, 12, 1 TEXT "~Include only Guidelines published from:",11,4,19,41,1 WS_GROUP EDIT "", 2012, 44, 19, 4, 1 ES_MARGIN TEXT "/", 11, 48, 19, 1, 1 WS_GROUP EDIT "", 2013, 49, 19, 4, 1 ES_MARGIN TEXT "/", 11, 53, 19, 1, 1 EDIT "", 2014, 54, 19, 4, 1 ES_MARGIN TEXT "~to", 11, 59, 19, 8, 1 WS_GROUP EDIT "", 2015, 62, 19, 4, 1 ES_MARGIN TEXT "/", 11, 66, 19, 1, 1 WS_GROUP EDIT "", 2016, 67, 19, 4, 1 ES_MARGIN TEXT "/", 11, 71, 19, 1, 1 EDIT "", 2017, 72, 19, 4, 1 ES_MARGIN TEXT "Dummy", 2018, 88, 19, 8, 1 PUSHBUTTON "~Send", IDOK, 10, 22, 8, 1 WS_GROUP | BS_DEFAULT | WS_BORDER PUSHBUTTON "Sa~ve", IDD_SAVE, 27, 22, 8, 1 WS_BORDER PUSHBUTTON "~Help", IDD_HELP, 43, 22, 8, 1 WS_BORDER PUSHBUTTON "~Cancel", IDCANCEL, 60, 22, 10, 1 WS_BORDER END STRINGTABLE BEGIN 1001 "_IF_ $2005 = 'Specif' _AND_ '' = $2006 _AND_ '' = $2007 _AND_ '' = $2008 _AND_ '' = $2009 _AND_ '' = $2012 _THEN_ ' Must specify some search criteria! '" 2000, "Prevention Guidelines, 18, 1" 2001, "Comment, EDIT, _DATE__TIME__SYSNAME" 2002, "Filename, EDIT, PREVENT, ALLOW, '__ALPHA_NUMBER'" 2003, "RAD1, RADIOBUTTON, ON, 2003, 2004, SUBJ, TOGGLE, ON, 2005, OFF, 2006, 2007, 2008, 2009, 2010, 2011, 12, 13, 14, 15" 2004, "RAD2, RADIOBUTTON, OFF, 2003, 2004, FREE, TOGGLE, ON, 2006, 2007, 2008, 2009, 2010, 2011, 12, 13, 14, 15, OFF, 2005" 2005, "RES1, COMBORANGE, 3000, 3239, CODED_INVISIBLE, 5" 2006, "KEY1, EDIT, _, ALLOW, '_ALPHA *.-$#&_NUMBER'" 2007, "KEY2, EDIT, _, ALLOW, '_ALPHA *.-$#&_NUMBER'" 2008, "KEY3, EDIT, _, ALLOW, '_ALPHA *.-$#&_NUMBER'" 2009, "KEY4, EDIT, _, ALLOW, '_ALPHA *.-$#&_NUMBER'" 2010, "RAD3, RADIOBUTTON, OFF, 2010, 2011, ALL" 2011, "RAD4, RADIOBUTTON, ON, 2010, 2011, TITL" 2012, "DAT1, DATE, _, MONTH, MDY, 820101, 991231, BEFORE, 2015" 2013, "DAT1, DATE, _, DAY, MDY, 820101, 991231, BEFORE, 2015" 2014, "DAT1, DATE, _, YEAR, MDY, 820101, 991231, BEFORE, 2015" 2015, "DAT2, DATE, _, MONTH, MDY, 820101, 991231, AFTER, 2012" 2016, "DAT2, DATE, _, DAY, MDY, 820101, 991231, AFTER, 2012" 2017, "DAT2, DATE, _, YEAR, MDY, 820101, 991231, AFTER, 2012" 2018, "UID1, TEXT, _USERID" 3000, " Specific subjects not selected..." 3001, "01008ACET(Advisory Council for the Elimination of Tuberculosis)" 3002, "00008ACIP (Advisory Committee on Immunization Practices)" 3003, "01013Adolescent Health" 3004, "01296African Sleeping Sickness" 3005, "01434Agency For Toxic Substances And Disease Registry (ATSDR)" 3006, "00023Aging" 3007, "01186Aging and Health Behaviors" 3008, "00026AIDS" 3009, "00038Amebiasis" 3010, "00041American Trypanosomiasis" 3011, "00049Animal Bites" 3012, "00053Animal Rabies" 3013, "00057Anthrax" 3014, "00059Antimicrobial Resistance" 3015, "00068Arthritis" 3016, "01497Assessment Protocol for Public Health (APEX/PH)" 3017, "00086B Virus" 3018, "00087Babesiosis" 3019, "00090Bacterial Diseases - Foodborne" 3020, "00099Behavioral Risk Factor Surveillance" 3021, "00100Behavioral Risks in Pregnancy" 3022, "00111Biological Products" 3023, "00112Biosafety" 3024, "01583Biosafety Guidelines" 3025, "00116Birth Defects" 3026, "00127Breast Cancer" 3027, "00132Bubonic Plague" 3028, "00139Cancer" 3029, "00140Candidiasis" 3030, "00142Carcinogens" 3031, "00143Cardiovascular Disease" 3032, "01022Cervical Cancer" 3033, "00153Chancroid" 3034, "00154Chemical Emergencies" 3035, "00155Chemical Hazards" 3036, "00156Chemical Hazards Nonemergency" 3037, "00158Chemical Munitions" 3038, "00162Chickenpox" 3039, "00165Child Health" 3040, "00166Childhood Vaccine - Preventable Diseases" 3041, "00168Chlamydia Infections (STD's)" 3042, "01047Chlamydia Pneumoniae (TWAR)" 3043, "00170Cholera" 3044, "01376Chronic Disease Control, Statistics" 3045, "00994Chronic Diseases Surveillance" 3046, "01064Chronic Fatigue Syndrome" 3047, "01375Cigarette Smoking and Lung Cancer" 3048, "01000Clinical Laboratory Improvement" 3049, "00198Coccidioidomycosis" 3050, "01498Community Health Planning" 3051, "01015Comprehensive School Health Education" 3052, "00213Congenital Defects" 3053, "01500Core Public Health Functions" 3054, "01018Coronary Heart Disease" 3055, "00229Cruise Ships" 3056, "00230Cryptococcosis" 3057, "00231Cryptosporidiosis" 3058, "00234Cysticercosis" 3059, "00237Cytomegalovirus" 3060, "00244Dengue Fever" 3061, "00251Diabetes" 3062, "00253Dialysis" 3063, "00254Diarrheal Disease" 3064, "01041Dimethylformamide" 3065, "00259Diphtheria and Diphtheria antitoxins" 3066, "00262Disasters" 3067, "01235Disasters, Chemical" 3068, "00264Disinfection" 3069, "00270Dracunculiasis" 3070, "00271Drug Service-CDC" 3071, "00275Dusts" 3072, "00278Ebola Virus" 3073, "01264Electrocutions" 3074, "00291Emergency Response Planning and Preparedness" 3075, "00295Encephalitis" 3076, "01466Endocrinology and Metabolism, Diabetes-Related" 3077, "00304Enteric Diseases" 3078, "00310Environmental Hazards and Health" 3079, "00333Exercise" 3080, "01468Eye Disease, Diabetic" 3081, "01265Falls" 3082, "00343Famine and Refugee Nutrition" 3083, "00352Filariasis" 3084, "01345Folic Acid, for Prevention of Neural Tube Defects" 3085, "00360Foodborne Diseases" 3086, "00363Foreign Visitors" 3087, "00373Gallium Arsinide" 3088, "00376Gastroenteritis" 3089, "00379German Measles (rubella)" 3090, "00380Giardiasis" 3091, "00383Glycol Ethers" 3092, "00384Gonorrhea" 3093, "00395Haemophilus influenzae" 3094, "01045Hand-Arm Vibration" 3095, "01595Hantaviruses" 3096, "01482Hazardous Materials" 3097, "01493Health Care Occupational Safety" 3098, "00401Health Education" 3099, "00406Health Information for International Travelers" 3100, "00408Health Promotion" 3101, "01435Health Studies" 3102, "01380Health-Related Behaviors" 3103, "00420Hemodialysis" 3104, "01026Hemophilia (AIDS-related)" 3105, "00424Hemorrhagic Fever" 3106, "00425Hepatitis" 3107, "01224Herpes Simplex" 3108, "01480Homicide/Assault Prevention" 3109, "00436Homicide/Suicide" 3110, "00439Hospital Infections" 3111, "01356Human Immunodeficiency Virus" 3112, "00456Immigrants" 3113, "00459Immunobiologicals" 3114, "00468Importation" 3115, "00472Infant Health/Infant Mortality" 3116, "00473Infant Mortality Surveillance" 3117, "01509Infection Control (Dental)/General Information" 3118, "00475Infectious Diseases (Dental Implications)" 3119, "00478Influenza (Viral)" 3120, "00484Injury Control" 3121, "01543Intentional Injury (Prevention)" 3122, "00492Intentional Injury (Violence)" 3123, "00494International Travel" 3124, "01125Iodine Deficiency" 3125, "00495Iron Deficiency" 3126, "00497Japanese Encephalitis" 3127, "00508Laboratory Animals" 3128, "00510Laboratory Infection" 3129, "00514Laboratory Safety-Other than CDC Facilities" 3130, "00518Laboratory Training (See Training)" 3131, "00521Lassa Fever" 3132, "01199Lead (Occupational Exposure)" 3133, "01074Lead Poisoning" 3134, "00528Leishmaniasis" 3135, "00532Leukemia" 3136, "00541Listeriosis" 3137, "01469Lower Extremity Disease, Diabetes-Related" 3138, "00546Lung Cancer (related to cigarette smoking)" 3139, "00549Lyme Disease" 3140, "00557Malaria" 3141, "01011Maternal Health" 3142, "00573Measles (rubeola)" 3143, "00579Meningitis" 3144, "00580Meningococci" 3145, "01559Microbiology/Bacteriology/Mycology" 3146, "00590Minority Health" 3147, "00595Monkeys" 3148, "00606Mumps" 3149, "00611Mustard Gas" 3150, "00613Mycobacteria" 3151, "00622National Institute for Occupational Safety and Health" 3152, "01014National Laboratory Training Network (See Training)" 3153, "00627Natural Disasters" 3154, "00628Neisseria gonorrhoeae" 3155, "01346Neural Tube Defects" 3156, "00633Nitrous Oxide" 3157, "00634Nocardiosis" 3158, "00636Nosocomial Infections" 3159, "00640Nursing Home Infections" 3160, "01471Nutrition and Diabetes" 3161, "00648Occupational Safety and Health" 3162, "00655Onchocerciasis" 3163, "01188Oral Cancer" 3164, "00666Papillomavirus (Human)" 3165, "00675PATCH (Planned Approach to Community Health)" 3166, "00684Pelvic Inflammatory Disease" 3167, "00688Perinatal Mortality, Perinatal and Child Health" 3168, "01587Permits, Importation of Etiologic Agents and Vectors" 3169, "00695Pertussis (Whooping Cough)" 3170, "00703Physical Activity" 3171, "00708Plague" 3172, "00713Pneumococcal Infections" 3173, "00714Pneumococcal Meningitis" 3174, "01536Pneumocystosis" 3175, "00717Pneumonia Vaccine" 3176, "00721Poliomyelitis" 3177, "01472Pregnancy and Diabetes" 3178, "00727Pregnancy Behavioral Risks" 3179, "00731Pregnancy-Related Mortality" 3180, "01420Prevention Effectiveness" 3181, "00735Prevention Programs (AIDS)" 3182, "01502Public Health Surveillance--State/Local" 3183, "01496Public Health Systems" 3184, "01249Quality Assurance" 3185, "00762Quarantine" 3186, "00763Rabies" 3187, "01152Radiator Repair Control" 3188, "01151Radon" 3189, "00773Refugees" 3190, "00793Rift Valley Fever" 3191, "01155Rotavirus" 3192, "01597Rubella (Congenital)" 3193, "00801Rubella (German Measles)" 3194, "00804Salmonella Infections" 3195, "01316Schistosomiasis" 3196, "00811School Health Programs" 3197, "00828Sexually Transmitted Diseases" 3198, "00831Shigellosis" 3199, "00833Shipping" 3200, "00840Smallpox" 3201, "01016Smokeless Tobacco" 3202, "00843Smoking and Health" 3203, "00842Smoking/Smokeless Tobacco (Oral Implications)" 3204, "00848Specimens" 3205, "00854Standards, Recommended Occupational, NIOSH" 3206, "00856State Activities" 3207, "01475Statistics and Surveillance, Diabetes" 3208, "00858Statistics, Notifiable Diseases, U.S." 3209, "00863Streptococcal Infections" 3210, "00865Stroke" 3211, "00873Suicide/Homicide" 3212, "00881Syphilis" 3213, "00890Tetanus" 3214, "00894Ticks" 3215, "01452Tobacco Smoke" 3216, "01051Toluene diisocyanate" 3217, "00896Toxic Exposures" 3218, "00901Toxoplasmosis" 3219, "01263Traumatic Injury" 3220, "00908Treponematoses" 3221, "00912Tuberculosis" 3222, "00915Typhoid" 3223, "00916Typhus" 3224, "00922Vaccines" 3225, "00923Vaccinia" 3226, "00925Varicella" 3227, "00938Violence (Intentional Injury)" 3228, "01542Violence Prevention (Intentional Injury)" 3229, "00939Viral Diseases" 3230, "01191Vitamins-Folic Acid And Spina Bifida" 3231, "00953Warts (Genital)" 3232, "00958Water Disinfection" 3233, "01258Water Supply, Environmental Contaminants" 3234, "00962Welding, Occupational Hazards" 3235, "00972Yaws" 3236, "00973Yellow Fever" 3237, "00974Yersinia Infections" 3238, "01158Youth Risk Behavioral Surveillance" 3239, "00976Zoster" END


The Prevention Guidelines HTML FORM


Prevention Guidelines Search Criteria--Press F1 for Help

Prevention Guidelines Search Criteria--Press F1 for Help

Comment:

Filename: .REQ/PCW

Primary subject Specific word/phrases

Search for Guidelines whose primary subject is...

Search for Guidelines with the following specific words/phrases:

or

AND

or

...anywhere in the document ...in the document title only

--AND--

Include only Guidelines published from: / / to / / RBT5

(LEAVE BLANK TO INCLUDE ENTIRE RANGE) mm / dd / yy


HTML generated from windows resource file: prev.rc Please mail comments to
rbt5@wonder.em.cdc.gov

CDC WWWonder

RC/HTML Conversion System Version: 3.01 Alpha

User: RBT5 Remote IP Address: xxx.xxx.xxx.xxx



The Prevention Guidelines Header (.h) File


/* THIS FILE PROGRAMMICALLY GENERATED, DO NOT MODIFY!! */ /* Include statements */ #include "vartable.h" /* Variable Declarations */ char *USERID = ""; /* for name 0 */ char *PASSWD = ""; /* for name 0 */ char *REMOTE_ADDR = ""; /* for name 0 */ char *ROOT = ""; /* for name 0 */ char *BASE = ""; /* for name 0 */ char *GROUP_1 = ""; /* for name 0 */ char *GROUP_2 = ""; /* for name 0 */ char *Comment = ""; /* for name 2001 */ char *Filename = ""; /* for name 2002 */ char *RAD1 = ""; /* for name 2003 */ char *RAD2 = ""; /* for name 2004 */ char *RES1 = ""; /* for name 2005 */ char *KEY1 = ""; /* for name 2006 */ char *KEY2 = ""; /* for name 2007 */ char *KEY3 = ""; /* for name 2008 */ char *KEY4 = ""; /* for name 2009 */ char *RAD3 = ""; /* for name 2010 */ char *RAD4 = ""; /* for name 2011 */ char *DAT1 = ""; /* for name 2012 */ char *DAT2 = ""; /* for name 2015 */ char *UID1 = "RBT5"; /* for name 2018 */ /* Variable Mapping Tables */ variables vars[] = { { "USERID", &USERID;, 0, 0 }, { "PASSWD", &PASSWD;, 0, 0 }, { "REMOTE_ADDR", &REMOTE;_ADDR, 0, 0 }, { "ROOT", &ROOT;, 0, 0 }, { "BASE", &BASE;, 0, 0 }, { "GROUP_1", &GROUP;_1, 0, 0 }, { "GROUP_2", &GROUP;_2, 0, 0 }, { "Comment", &Comment;, 2001, 2001 }, { "Filename", &Filename;, 2002, 2002 }, { "RAD1", &RAD1;, 2003, 2003 }, { "RAD2", &RAD2;, 2004, 2004 }, { "RES1", &RES1;, 2005, 2005 }, { "KEY1", &KEY1;, 2006, 2006 }, { "KEY2", &KEY2;, 2007, 2007 }, { "KEY3", &KEY3;, 2008, 2008 }, { "KEY4", &KEY4;, 2009, 2009 }, { "RAD3", &RAD3;, 2010, 2010 }, { "RAD4", &RAD4;, 2011, 2011 }, { "DAT1", &DAT1;, 2012, 2012 }, { "DAT2", &DAT2;, 2015, 2015 }, { "UID1", &UID1;, 2018, 2018 }, {0,0,0,0}, 0 }; /* Table of Acceptable Values */ str_table values[] = { { "USERID", "RBT5" }, { "REMOTE_ADDR", "xxx.xxx.xxx.xxx" }, { "PASSWD", "xxx" }, { "ROOT", "prev" }, { "BASE", "00" }, { "GROUP_1", "RAD1" }, { "RAD1", "ON" }, { "RAD1", "OFF" }, { "GROUP_1", "RAD2" }, { "RAD2", "ON" }, { "RAD2", "OFF" }, { "RES1", " " }, { "RES1", "01008" }, { "RES1", "00008" }, { "RES1", "01013" }, { "RES1", "01296" }, { "RES1", "01434" }, { "RES1", "00023" }, { "RES1", "01186" }, { "RES1", "00026" }, { "RES1", "00038" }, { "RES1", "00041" }, { "RES1", "00049" }, { "RES1", "00053" }, { "RES1", "00057" }, { "RES1", "00059" }, { "RES1", "00068" }, { "RES1", "01497" }, { "RES1", "00086" }, { "RES1", "00087" }, { "RES1", "00090" }, { "RES1", "00099" }, { "RES1", "00100" }, { "RES1", "00111" }, { "RES1", "00112" }, { "RES1", "01583" }, { "RES1", "00116" }, { "RES1", "00127" }, { "RES1", "00132" }, { "RES1", "00139" }, { "RES1", "00140" }, { "RES1", "00142" }, { "RES1", "00143" }, { "RES1", "01022" }, { "RES1", "00153" }, { "RES1", "00154" }, { "RES1", "00155" }, { "RES1", "00156" }, { "RES1", "00158" }, { "RES1", "00162" }, { "RES1", "00165" }, { "RES1", "00166" }, { "RES1", "00168" }, { "RES1", "01047" }, { "RES1", "00170" }, { "RES1", "01376" }, { "RES1", "00994" }, { "RES1", "01064" }, { "RES1", "01375" }, { "RES1", "01000" }, { "RES1", "00198" }, { "RES1", "01498" }, { "RES1", "01015" }, { "RES1", "00213" }, { "RES1", "01500" }, { "RES1", "01018" }, { "RES1", "00229" }, { "RES1", "00230" }, { "RES1", "00231" }, { "RES1", "00234" }, { "RES1", "00237" }, { "RES1", "00244" }, { "RES1", "00251" }, { "RES1", "00253" }, { "RES1", "00254" }, { "RES1", "01041" }, { "RES1", "00259" }, { "RES1", "00262" }, { "RES1", "01235" }, { "RES1", "00264" }, { "RES1", "00270" }, { "RES1", "00271" }, { "RES1", "00275" }, { "RES1", "00278" }, { "RES1", "01264" }, { "RES1", "00291" }, { "RES1", "00295" }, { "RES1", "01466" }, { "RES1", "00304" }, { "RES1", "00310" }, { "RES1", "00333" }, { "RES1", "01468" }, { "RES1", "01265" }, { "RES1", "00343" }, { "RES1", "00352" }, { "RES1", "01345" }, { "RES1", "00360" }, { "RES1", "00363" }, { "RES1", "00373" }, { "RES1", "00376" }, { "RES1", "00379" }, { "RES1", "00380" }, { "RES1", "00383" }, { "RES1", "00384" }, { "RES1", "00395" }, { "RES1", "01045" }, { "RES1", "01595" }, { "RES1", "01482" }, { "RES1", "01493" }, { "RES1", "00401" }, { "RES1", "00406" }, { "RES1", "00408" }, { "RES1", "01435" }, { "RES1", "01380" }, { "RES1", "00420" }, { "RES1", "01026" }, { "RES1", "00424" }, { "RES1", "00425" }, { "RES1", "01224" }, { "RES1", "01480" }, { "RES1", "00436" }, { "RES1", "00439" }, { "RES1", "01356" }, { "RES1", "00456" }, { "RES1", "00459" }, { "RES1", "00468" }, { "RES1", "00472" }, { "RES1", "00473" }, { "RES1", "01509" }, { "RES1", "00475" }, { "RES1", "00478" }, { "RES1", "00484" }, { "RES1", "01543" }, { "RES1", "00492" }, { "RES1", "00494" }, { "RES1", "01125" }, { "RES1", "00495" }, { "RES1", "00497" }, { "RES1", "00508" }, { "RES1", "00510" }, { "RES1", "00514" }, { "RES1", "00518" }, { "RES1", "00521" }, { "RES1", "01199" }, { "RES1", "01074" }, { "RES1", "00528" }, { "RES1", "00532" }, { "RES1", "00541" }, { "RES1", "01469" }, { "RES1", "00546" }, { "RES1", "00549" }, { "RES1", "00557" }, { "RES1", "01011" }, { "RES1", "00573" }, { "RES1", "00579" }, { "RES1", "00580" }, { "RES1", "01559" }, { "RES1", "00590" }, { "RES1", "00595" }, { "RES1", "00606" }, { "RES1", "00611" }, { "RES1", "00613" }, { "RES1", "00622" }, { "RES1", "01014" }, { "RES1", "00627" }, { "RES1", "00628" }, { "RES1", "01346" }, { "RES1", "00633" }, { "RES1", "00634" }, { "RES1", "00636" }, { "RES1", "00640" }, { "RES1", "01471" }, { "RES1", "00648" }, { "RES1", "00655" }, { "RES1", "01188" }, { "RES1", "00666" }, { "RES1", "00675" }, { "RES1", "00684" }, { "RES1", "00688" }, { "RES1", "01587" }, { "RES1", "00695" }, { "RES1", "00703" }, { "RES1", "00708" }, { "RES1", "00713" }, { "RES1", "00714" }, { "RES1", "01536" }, { "RES1", "00717" }, { "RES1", "00721" }, { "RES1", "01472" }, { "RES1", "00727" }, { "RES1", "00731" }, { "RES1", "01420" }, { "RES1", "00735" }, { "RES1", "01502" }, { "RES1", "01496" }, { "RES1", "01249" }, { "RES1", "00762" }, { "RES1", "00763" }, { "RES1", "01152" }, { "RES1", "01151" }, { "RES1", "00773" }, { "RES1", "00793" }, { "RES1", "01155" }, { "RES1", "01597" }, { "RES1", "00801" }, { "RES1", "00804" }, { "RES1", "01316" }, { "RES1", "00811" }, { "RES1", "00828" }, { "RES1", "00831" }, { "RES1", "00833" }, { "RES1", "00840" }, { "RES1", "01016" }, { "RES1", "00843" }, { "RES1", "00842" }, { "RES1", "00848" }, { "RES1", "00854" }, { "RES1", "00856" }, { "RES1", "01475" }, { "RES1", "00858" }, { "RES1", "00863" }, { "RES1", "00865" }, { "RES1", "00873" }, { "RES1", "00881" }, { "RES1", "00890" }, { "RES1", "00894" }, { "RES1", "01452" }, { "RES1", "01051" }, { "RES1", "00896" }, { "RES1", "00901" }, { "RES1", "01263" }, { "RES1", "00908" }, { "RES1", "00912" }, { "RES1", "00915" }, { "RES1", "00916" }, { "RES1", "00922" }, { "RES1", "00923" }, { "RES1", "00925" }, { "RES1", "00938" }, { "RES1", "01542" }, { "RES1", "00939" }, { "RES1", "01191" }, { "RES1", "00953" }, { "RES1", "00958" }, { "RES1", "01258" }, { "RES1", "00962" }, { "RES1", "00972" }, { "RES1", "00973" }, { "RES1", "00974" }, { "RES1", "01158" }, { "GROUP_2", "RAD3" }, { "RAD3", "ON" }, { "RAD3", "OFF" }, { "GROUP_2", "RAD4" }, { "RAD4", "ON" }, { "RAD4", "OFF" }, {0,0}, 0 }; /* Table of Values to change */ conv_tbl convert_values[] = { { "RAD1", "ON", "SUBJ" }, { "RAD1", "OFF", "" }, { "RAD2", "ON", "FREE" }, { "RAD2", "OFF", "" }, { "RAD3", "ON", "ALL" }, { "RAD3", "OFF", "" }, { "RAD4", "ON", "TITL" }, { "RAD4", "OFF", "" }, {0,0,0}, 0 }; /* Table of Menuitems */ menu menuitems[] = { {0,0}, 0 }; /* Toggle Declarations */ toggles togs[] = { { "RES1", "RAD1", "OFF" }, { "KEY1", "RAD1", "ON" }, { "KEY2", "RAD1", "ON" }, { "KEY3", "RAD1", "ON" }, { "KEY4", "RAD1", "ON" }, { "RAD3", "RAD1", "ON" }, { "RAD4", "RAD1", "ON" }, { "12", "RAD1", "ON" }, { "13", "RAD1", "ON" }, { "14", "RAD1", "ON" }, { "15", "RAD1", "ON" }, { "KEY1", "RAD2", "OFF" }, { "KEY2", "RAD2", "OFF" }, { "KEY3", "RAD2", "OFF" }, { "KEY4", "RAD2", "OFF" }, { "RAD3", "RAD2", "OFF" }, { "RAD4", "RAD2", "OFF" }, { "12", "RAD2", "OFF" }, { "13", "RAD2", "OFF" }, { "14", "RAD2", "OFF" }, { "15", "RAD2", "OFF" }, { "RES1", "RAD2", "ON" }, {0,0,0}, 0 }; /* Dates Declarations */ dates date_data[] = { { "DAT1", "M", "MDY" }, { "DAT1", "D", "MDY" }, { "DAT1", "Y", "MDY" }, { "DAT2", "M", "MDY" }, { "DAT2", "D", "MDY" }, { "DAT2", "Y", "MDY" }, {0,0,0}, 0 }; /* END GENERATED CODE */


The Prevention Guidelines SGI Source (.c) File


/* THIS FILE PROGRAMICALLY GENERATED:: DO NOT MODIFY!! */ /* invoked: conv_2 1 prev ../resource/prev.rc RBT5 xxx xxx.xxx.xxx.xxx */ #include #include #include "/wonder/cern/www/wonder/test/mosaic/RBT5/prev.h" main( argc, argv ) int argc; char **argv; { int i; int fail=0; int upload = 0; int menu_process; fail = parseargs( argc, argv ); convert_args(); menu_process = check_menu(); if( menu_process ) { exit( 0 ); } printf( "Content-type: text/html%c%c",10,10); if( ( !test_toggle( "RES1" ) && strcmp( RES1, "Specif" ) == 0 ) && ( strcmp( "", KEY1 ) == 0 && !test_toggle( "KEY1" ) ) && ( strcmp( "", KEY2 ) == 0 && !test_toggle( "KEY2" ) ) && ( strcmp( "", KEY3 ) == 0 && !test_toggle( "KEY3" ) ) && ( strcmp( "", KEY4 ) == 0 && !test_toggle( "KEY4" ) ) && ( strcmp( "", DAT1 ) == 0 && !test_toggle( "DAT1" ) ) ) { printf( "' Must specify some search criteria! '

\n" ); fail=1; } for( i= strlen( Filename ); i >= 0; i-- ) if( !strchr( "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", Filename[i] ) ) { printf( "ALLOW: (%s) char (%c) found in %s

\n","Filename", Filename[i], Filename ); fail=1; printf( "\tAllowable Characters are \"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"

\n" ); } for( i= strlen( KEY1 ); i >= 0; i-- ) if( !strchr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789", KEY1[i] ) ) { printf( "ALLOW: (%s) char (%c) found in %s

\n","KEY1", KEY1[i], KEY1 ); fail=1; printf( "\tAllowable Characters are \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789\"

\n" ); } for( i= strlen( KEY2 ); i >= 0; i-- ) if( !strchr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789", KEY2[i] ) ) { printf( "ALLOW: (%s) char (%c) found in %s

\n","KEY2", KEY2[i], KEY2 ); fail=1; printf( "\tAllowable Characters are \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789\"

\n" ); } for( i= strlen( KEY3 ); i >= 0; i-- ) if( !strchr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789", KEY3[i] ) ) { printf( "ALLOW: (%s) char (%c) found in %s

\n","KEY3", KEY3[i], KEY3 ); fail=1; printf( "\tAllowable Characters are \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789\"

\n" ); } for( i= strlen( KEY4 ); i >= 0; i-- ) if( !strchr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789", KEY4[i] ) ) { printf( "ALLOW: (%s) char (%c) found in %s

\n","KEY4", KEY4[i], KEY4 ); fail=1; printf( "\tAllowable Characters are \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ *.- #&0123456789\"

\n" ); } if( !test_toggle( "DAT1" ) && datecmp( "DAT1", "DAT2" ) >= 0 ) { fail=1; printf( "DATE: %s (%s) must be BEFORE %s (%s)

\n", "DAT1", DAT1, "DAT2", DAT2 ); } if( !test_toggle( "DAT1" ) && datecmp( "DAT1", "DAT2" ) >= 0 ) { fail=1; printf( "DATE: %s (%s) must be BEFORE %s (%s)

\n", "DAT1", DAT1, "DAT2", DAT2 ); } if( !test_toggle( "DAT1" ) && datecmp( "DAT1", "DAT2" ) >= 0 ) { fail=1; printf( "DATE: %s (%s) must be BEFORE %s (%s)

\n", "DAT1", DAT1, "DAT2", DAT2 ); } if( !test_toggle( "DAT2" ) && datecmp( "DAT2", "DAT1" ) <= 0 ) { fail=1; printf( "DATE: %s (%s) must be AFTER %s (%s)

\n", "DAT2", DAT2, "DAT1", DAT1 ); } if( !test_toggle( "DAT2" ) && datecmp( "DAT2", "DAT1" ) <= 0 ) { fail=1; printf( "DATE: %s (%s) must be AFTER %s (%s)

\n", "DAT2", DAT2, "DAT1", DAT1 ); } if( !test_toggle( "DAT2" ) && datecmp( "DAT2", "DAT1" ) <= 0 ) { fail=1; printf( "DATE: %s (%s) must be AFTER %s (%s)

\n", "DAT2", DAT2, "DAT1", DAT1 ); } conversion(); if( !fail ) { print_request( "PREVENTION GUIDELINES", upload ); } else printf( "failure to pass field validation!\n" ); if( !fail ) self_rm( fail, USERID, ROOT, BASE ); return(0); } /* END GENERATED CODE */


The VARS file output from previous transaction step


source "CDC WONDER/PC Data File" Version 2.5 SystemName="CDC Prevention Guidelines" RequestDate="2/14/95 12:52" MosaicUser="RBT5" MosaicResource="prev" Comment="021495_12:52_Prevention Guidelines" Filename="PRE" ReportDate=" 2/14/95 13:00" RAD1="SUBJ" RAD2="" RES1="01296" KEY1="mosquito" KEY2="" KEY3="" KEY4="" RAD3="ALL" RAD4="" DAT1="830101" DAT2="990101" UID1="RBT5" ResourceFile="PREV1" ReformatMe="TRUE" matrix Doc2 contains String DocID (size=17 format=17) Integer Dummy (size=1 format=1) values PREV 0000001221 endmatrix TEXT Doc1 size = 59 06/01/94 Health Information for International Travel 1994


The Next Prevention Guidelines Resource File


#include "style.h" #include "basic.h" Prev1 DIALOG -1, 0, 82, 26 CAPTION "Prevention Guidelines Documents Meeting Your Search Criteria" BEGIN TEXT "Co~mment:", 11, 2, 1, 31, 1 EDIT "", 2001, 13, 1, 42, 1 ES_MARGIN TEXT "~Filename:", 11, 2, 2, 31, 1 EDIT "", 2002, 13, 2, 10, 1 ES_MARGIN TEXT ".REQ/PCW", 11, 23, 2, 20, 1 "VirtList" "~Highlight the document you wish to download...",2003,0,4,80,16 LBS_NOTIFY | LBS_MULTIPLESEL | LBS_OWNERDRAWFIXED | WS_GROUP | WS_TABSTOP CHECKBOX "Include graphs if present in document?",2004,19,21, 25, 1 TEXT "NOTE: For long documents, you may first receive the table of contents",11,5,22,70,1 TEXT "Dummy", 2005, 88, 22, 8, 1 PUSHBUTTON "~Send", IDOK, 10, 24, 8, 1 BS_DEFAULT | WS_BORDER PUSHBUTTON "Sa~ve", IDD_SAVE, 27, 24, 8, 1 WS_BORDER PUSHBUTTON "~Help", IDD_HELP, 43, 24, 8, 1 WS_BORDER PUSHBUTTON "~Cancel", IDCANCEL, 60, 24, 10, 1 WS_BORDER END STRINGTABLE BEGIN 2000, "Prevention Guidelines, 16, 0" 2001, "Comment, EDIT, _DATE__TIME__SYSNAME" 2002, "Filename, EDIT, PREVENT2, ALLOW, '__ALPHA_NUMBER'" 2003, "R, VIRTUAL_LIST, <>, MIXED, 17, 1, CONT_REC" 2004, "GRPH, CHECKBOX, ON, GRAPHS, -" 2005, "UID1, TEXT, _USERID" 2006, "KEY1, VARS" 2007, "KEY2, VARS" 2008, "KEY3, VARS" 2009, "KEY4, VARS" 2010, "RAD3, VARS" 2011, "RAD4, VARS" 2012, "DAT1, VARS" 2013, "DAT2, VARS" 2014, "RAD1, VARS" 2015, "RAD2, VARS" 2016, "RES1, VARS" END


The Next Prevention Guidelines HTML File


Prevention Guidelines Documents Meeting Your Search Criteria

Prevention Guidelines Documents Meeting Your Search Criteria

Comment:

Filename: .REQ/PCW

Highlight the document you wish to download...

Include graphs if present in document?

NOTE: For long documents; you may first receive the table of contents RBT5


HTML generated from windows resource file: PREV1.RC Please mail comments to
rbt5@wonder.em.cdc.gov

CDC WWWonder

RC/HTML Conversion System Version: 3.01 Alpha

User: RBT5 Remote IP Address: 158.111.67.35



Figures

New Request
This HTML screen is a selection screen to pick the desired dataset one wishes to query. The examples below would have the user selecting "Prevention Guidelines" from the "New Request" FORM.
Prevention Guidelines Search Criteria
This HTML screen is what is generated for the CGI backend of New Request when the user submits that FORM. This screen will generate a data base query for the Prevention Guidelines Database on an IBM MainFrame.
Prevention Guidelines Documents Meeting Your Search Criteria
This HTML screen allows the user to select any of the documents that met his search criteria from the previous screen (Prevention Guidelines Search Criteria). From this screen the user will go on to down load documents from the MainFrame, View those documents, or (as in this case) be given the opportunity to download the document's table of contents and thus download and view one chapter at a time. This is done for extremely large documents...
NOTE: The SIZE:1,1 is actually a reference to the size of the docuement. The 1,1 is actually a code that means 1 document, and type is table of contents.

New Request

Data Sets


Prevention Guidelines Search Criteria--Press F1 for Help

Comment:

Filename: .REQ/PCW

Primary subject Specific word/phrases

Search for Guidelines whose primary subject is...

Search for Guidelines with the following specific words/phrases:

or

AND

or

...anywhere in the document ...in the document title only

--AND--

Include only Guidelines published from: / / to / / RBT5

(LEAVE BLANK TO INCLUDE ENTIRE RANGE) mm / dd / yy


Prevention Guidelines Documents Meeting Your Search Criteria

Comment:

Filename: .REQ/PCW

Highlight the document you wish to download...

Include graphs if present in document?

NOTE: For long documents; you may first receive the table of contents RBT5


References

Thralls, 1994
Thralls, Robert K. Sr.; Contractor:
Building HTML Application Systems: Converting Existing MS-Windows Applications to HTML

Send Comments Directly to Robert K. Thralls