WebBOL© A internet programming tool from ACS Corporation |
This document explains how to execute and program your web pages (forms) using the WebBOL system. It may sound reversed but it is easier to understand the programming if first you understand how to execute a WebBOL program.
Execution
This document portion explains how to run WebBOL with your DLL program. Execution involves initiating our program to generate native HTML (Hyper Text Markup Language) based on your form design and on your program's desires. HTML is the standard for web browsers. Most programs will execute in less than 3/10ths of a second. This is from the beginning of execution to the end of HTML generation. If there is any lag, it is usually the speed of the internet connection.
The easiest way to understand this is to execute the sample programs included with WebBOL. To begin, enter the following address into your browserhttp://your domain/WebBOL-Execute.cgi?@form=Sample-WebBOL-Menu1 or you could just click that link. This web address is a coded instruction. It tells your browser the following:
A lot of information here, but a simple process. The web address above will execute and display a sample menu. This sample menu program will allow you to execute other programs. Try it. Play with it. Look at the web addresses as you select different items.
You don't have to go thru the sample menu program to execute one of the programs. Using the same information above, change the @form parameter to directly execute a different program. For example, http://your domain/WebBOL-Execute.cgi?@form=Sample-WebBOL-Images
So lets recap. A web address like WWW.YourWebsite.com/WebBOL-Execute.cgi?@form=LG-menu is put into a browser. WebBOL-Execute.cgi is a PERL program that interfaces to the COBOL or C program you wrote. LG-menu is the form you created which will be displayed. WebBOL sets up the form requested, calls your program (a DLL) to initialize any data, creates the necessary HTML (internet code) to present the form to the user. The process starts over when the user clicks a significant event (e.g. an update button).
Hopefully by now you are thinking, Is there someway around my users keying that whole address ? Yes. A internet standard can be used: If no webpage or program is specified then use index.htm. What this means, if WWW.YourWebsite.com is keyed in, then it is the same as keying WWW.YourWebsite.com/index.htm So we create a index.htm file that calls the WebBOL cgi program. Therefore reducing all that keying.This technique is used in the WebBOL samples. Try the following web addresshttp://localhost/WebBOL Much shorter than the long address above, yes ? The source for this this index.htm can be found in the WebBOL folder (C:\inetpub\wwwroot\WebBOL\index.htm). Or here is the HTML code for an index.htm that will call the full WebBOL CGI sequence above. You only have to change the text in magentato your form name. Typically, this form is a home page that displays a menu of choices. Examine the WebBOL-Samples.htm filewhen you are ready. Execute it. You will start to see how it fits together.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="REFRESH" content="0;url=WebBOL-Execute.cgi?@form=YourFormNameHere">
<title>Startup Page</title>
<base target="_self">
</head>
<body>
</body>
</html>
The last subject to cover is distribution and the runtime. The runtime can be used and distributed free of charge by any licensed user. All the required runtime files can be found in your domain folder with the prefix of WebBOL. Copy all of these files (along with your dll programs and WebBOL forms files) to your website folder. Make sure your website is a iis website and not a Linux website.
To copy files to the internet, we use an FTP program called FileZilla. It can be found for free at this website. http://filezilla-project.org If you are part of a large corporate environment, you may not be allowed to FTP to the website. A web manager or web group may do this for you.
If you are getting a background image that says "Evaluation Copy" your license file is needs updating. This can appear for 2 reasons. One, your are running, developing and executing via the evaluation system. If this is the case, you need a license file to eliminate this background image. You can get a license file by contacting us and securing customer status. Two, you are a customer and have move the system to another machine, website, or folder. No problem, just contact us for another license file at no charge.
Programming
The purpose of this section is to assist you in programming your web based system. This documentation assumes you are experienced in using the internet. If you are not then use of buttons, listboxes and such will seem foreign for awhile. If you have programmed a GUI (Graphical User Interface) before on some system, like Windows, then you will move very quickly through this documentation.
You are strongly encouraged to first test and review the sample programs previously mentioned. All sample programs come with copybooks and source code. This can be found in your domain folder with the prefix of Sample-. The sample source will show you how the data flows from the user, to the browser, to WeBOL, to a DLL, and back again. The sample button program is a good place to start. A very short simple program that takes a button click from a user, through the browser, to WebBOL that calls a DLL for processing and back again.
Probably the most common programming difficulty is understanding the true distributed nature of the internet and browsers. COBOL and C programmers have generally come up thru the ranks with great stress on efficiency. Mainly because their programming has total control over the terminal and end-user actions. e.g. when it starts, processes and ends. This type of programming doesn't work well with the internet. The internet is the truest form of a distributed system. You won't know when your users exit the system. They will click the "X" in the browser and poof. They are gone. Trying to program a system that controls the user is futile. You must learn to program a request (such as update employee address) by opening the file, updating the data, closing the file. Your are done until the next request. Your program is over. WebBOL helps you with this technique by clearly relating events, providing a demonstration system, and programming samples.
The programming process has 3 steps which may be repeated until the program has been determined complete.
During this process there will be 3 files involved.
For example, if you had a WebBOL form named EMPLOYEE-INFO, then the names of the 3 files would be:
So let us begin by assuming you have completed step 1 above. You have created a Web Form using the WebBOL editor. A copybook was created during that step. The copybook is the key to programming your DLL. The first part of the copybook is common, the same, for every web form you create. It contains fields that define events or data to the entire form. These are the fields that must first be examined to determine what should be done. Below is a COBOL list of these common fields.
| * ACS Corporation WebBOL Forms Record HEADER PORTION | |||
| 05 WEBBOL-HEADER. | |||
| 10 WEBBOL-RECORD-LENGTH | PIC 9(7) | VALUE ???????. | Is the length of this copybook. This value should be used in every DLL to verify that the copybook is the most current. See the sample source code for a more thorough description. |
| 10 WEBBOL-TIMESTAMP | PIC 9(16) | VALUE ????????????????. | Is the date and time this copybook was created. This value should be used in every DLL to verify that the copybook is the most current. See the sample source code for a more thorough description. |
| 10 WEBBOL-ACTION | PIC X | VALUE SPACES. | Tells your DLL what has happened or is about to happen on the user end of the Web Browser. |
| 88 WEBBOL-INIT | VALUE 'A'. | Indicates that WebBOL is about to display a form for the first time. You should initialize any fields, listboxes or data at this time. For example, if your form has a list of employees you should load the list at this time. | |
| 88 WEBBOL-SUBMIT | VALUE 'B'. | Indicates that the user has created an event. For example, maybe a UPDATE button was clicked. Your DLL should scan your buttons to determine which button was clicked then perform an appropriate action. | |
| 88 WEBBOL-ONCHANGE | VALUE 'C'. | Indicates the user has changed something on the form that you wanted the DLL to be notified about. For example, maybe you wanted to know if the user has changed the zip code. So you could change the city and state. | |
| 88 WEBBOL-REFRESH | VALUE 'D'. | Indicates a timer interval has expired. You may create forms that notify your DLL every few second(s), minute(s) or hour(s). This type of form is useful to keep the form's data content current. For example, you create a form that notifies you every 5 minutes. At this interval your DLL checks databases for the most current daily sales figures and updates the form. | |
| 88 WEBBOL-OK | VALUE 'E'. | Indicates the OK button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-YES | VALUE 'F'. | Indicates the YES button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-NO | VALUE 'G'. | Indicates the NO button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-CANCEL | VALUE 'H'. | Indicates the CANCEL button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-RETRY | VALUE 'I'. | Indicates the RETRY button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-CONTINUE | VALUE 'J'. | Indicates the CONTINUE button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-IGNORE | VALUE 'K'. | Indicates the IGNORE button was clicked on a WebBOL message presented to the user. | |
| 88 WEBBOL-NEWFORM | VALUE 'L'. | Indicates your DLL is over and you would like to display a different form. If set then your DLL should initialize the next three fields. The next three fields define what the name if the next form to display and any parameters its DLL might need. | |
| 88 WEBBOL-POPUP-HAS-CLOSED | VALUE 'M'. | Indicates a PopUp form on your parent display has been closed. This allows you to perform any programming task before the parent form is redisplayed. e.g. refresh any data that the PopUp form may have changed. | |
| 88 WEBBOL-DISPLAY-POPUP | VALUE 'N'. | Tells the WebBOL system your form (referred to as a parent form) will display a Standard PopUp form. A standard popup form HAS a Title bar, Close button [X], drag capability, and sizing capability. Setting this action requires the WEBBOL-FORM field to contain the name of a valid WEBBOL-FORM. Optional parameters (below) allow you to control the size and location of the PopUp form. Though not required, a PopUp form will usually have no menu, a different color background, the FORM PROPERTIES have the "User The Least Column Spacing" and the "No System Created Horizontal Spacing" attributes checked. | |
| 88 WEBBOL-CLOSE-POPUP | VALUE 'O'. | Tells the WebBOL system to close the PopUp form. After closing, the system will issue a WEBBOL-POPUP-HAS-CLOSED action to the parent form. | |
| 88 WEBBOL-DISPLAY-POPUP-MINIMAL | VALUE 'P'. | Tells the WebBOL system your form (referred to as a parent form) will display a minimal PopUp form. A minimal popup form does NOT have Title bar, Close button [X], drag capability, nor sizing capability. Setting this action requires the WEBBOL-FORM field to contain the name of a valid WEBBOL-FORM. Parameters (below) allow you to control the size and location of the PopUp form. Though not required, a PopUp form will usually have no menu, a different color background, the FORM PROPERTIES have the "User The Least Column Spacing" and the "No System Created Horizontal Spacing" attributes checked. NOTE: A size and width is required for this type of popup. Typically a width of 60 and a height of 60 will get you started in the right direction. | |
| 10 WEBBOL-FORM | PIC X(30 | VALUE SPACES. | The form to display when this DLL ends. |
| 10 WEBBOL-FORM-PARMS | PIC X(1000) | VALUE SPACES. | The parameters to pass to a new form. Or parameters to pass back to this DLL after a user event. For example, a user requests to change a employee record. You could store the employee record key here. When the user clicks the UPDATE button, the employee record key will still be in this field. Another technique is to store this type of information in hidden fields. Controls with the hidden attribute will not be seen by the user, nor contained within the generated source code. It will be returned to your DLL though. |
| 10 WEBBOL-PROGRAM | PIC X(100) | VALUE SPACES. | The DLL to call when this DLL ends. |
| 10 WEBBOL-FIELD-FOCUS | PIC X(25) | VALUE SPACES. | Moving the name of a field here will cause the browser to scroll to and focus or just focus to that field. Scroll to forcing it to be in view to the user. For example, some forms are very long requiring vertical scroll bars to view the entire web page. Placing the name of a particular field, such as EMPLOYEE-PHONE-NUMBER, into this field will cause EMPLOYEE-PHONE-NUMBER to automatically scroll into view. Even if it is at the bottom of the web page. The field WEBBOL-FOCUS-TYPE below can specify to scroll to this field or not. |
| 10 WEBBOL-MESSAGE | PIC X(100) | VALUE SPACES. | Placing message text into this field creates a custom WebBOL message. A very nice graphical message with your choice of responses such as OK, CANCEL, RETRY, etc. |
| 10 WEBBOL-MESSAGE-COLOR | PIC X | VALUE SPACES. | Allows you to choose the desired background color for the message text mentioned above. Typically, red is for a critical error, yellow for a warning, blue for informational messages. |
| 88 WEBBOL-RED | VALUE 'A'. | Indicates you want a message with a red background. | |
| 88 WEBBOL-GREEN | VALUE 'B'. | Indicates you want a message with a green background. | |
| 88 WEBBOL-YELLOW | VALUE 'C'. | Indicates you want a message with a yellow background. | |
| 88 WEBBOL-GREY | VALUE 'D'. | Indicates you want a message with a grey background. | |
| 88 WEBBOL-BLUE | VALUE 'E'. | Indicates you want a message with a blue background. | |
| 10 WEBBOL-MESSAGE-ICON | PIC X | VALUE SPACES. | Allows you to choose the desired icon form the message text mentioned above. |
| 88 WEBBOL-STOP | VALUE 'A'. | Indicates you want a STOP icon on the message. | |
| 88 WEBBOL-INFO | VALUE 'B'. | Indicates you want a INFO icon on the message. | |
| 88 WEBBOL-QUESTION | VALUE 'C'. | Indicates you want a QUESTION icon on the message. | |
| 88 WEBBOL-EXCLAIM | VALUE 'D'. | Indicates you want a EXCLAIM icon on the message. | |
| 10 WEBBOL-MESSAGE-BUTTONS | VALUE SPACES. | Allows you to choose which buttons to present to the user when the custom WebBOL message is presented. You may select any combination of the buttons below. If you have message text then you should select at least one button. | |
| 15 WEBBOL-OK-BTN | PIC X. | ||
| 88 WEBBOL-USE-OK | VALUE 'Y'. | Indicates you want a OK button displayed on your message. | |
| 88 WEBBOL-USE-OK-CHILD-DONE | VALUE 'C'. | Indicates you want a OK button on a message displayed from a child window. This is a advanced option to be discussed later. | |
| 15 WEBBOL-YES-BTN | PIC X. | ||
| 88 WEBBOL-USE-YES | VALUE 'Y'. | Indicates you want a YES button displayed on your message. | |
| 15 WEBBOL-NO-BTN | PIC X. | ||
| 88 WEBBOL-USE-NO | VALUE 'Y'. | Indicates you want a NO button displayed on your message. | |
| 15 WEBBOL-CANCEL-BTN | PIC X. | ||
| 88 WEBBOL-USE-CANCEL | VALUE 'Y'. | Indicates you want a CANCEL button displayed on your message. | |
| 15 WEBBOL-RETRY-BTN | PIC X. | ||
| 88 WEBBOL-USE-RETRY | VALUE 'Y'. | Indicates you want a RETRY button displayed on your message. | |
| 15 WEBBOL-CONTINUE-BTN | PIC X. | ||
| 88 WEBBOL-USE-CONTINUE | VALUE 'Y'. | Indicates you want a CONTINUE button displayed on your message. | |
| 88 WEBBOL-USE-X-NO-RETURN | VALUE 'X'. | Indicates you want a message displayed, but does not return to your dll. | |
| 15 WEBBOL-IGNORE-BTN | PIC X. | ||
| 88 WEBBOL-USE-IGNORE | VALUE 'Y'. | Indicates you want a IGNORE button displayed on your message. | |
| 10 WEBBOL-TITLE | PIC X(50) | VALUE SPACES. | This title of your form. |
| 10 WEBBOL-REPLACE-MENU | PIC X(50). | This field is used in conjunction with the WEBBOL-MENU-STYLE field. It can contain the name of a replacement menu. | |
| 10 WEBBOL-MENU-STYLE | PIC X | VALUE SPACES. | Allows you to choose the style of menu to display to the user. You can dynamically change whether the menu should be displayed horizontally or vertically or No Menu or replace the Menu. |
| 88 WEBBOL-HORIZ | VALUE 'H'. | Indicates you want the menu to be displayed horizontally. | |
| 88 WEBBOL-VERT | VALUE 'V'. | Indicates you want the menu to be displayed vertically. | |
| 88 WEBBOL-NO-MENU | VALUE 'V'. | Indicates you do NOT want a menu displayed. | |
| 88 WEBBOL-REPLACE | VALUE 'R'. | Indicates you want a new/replacement menu displayed. The new/replacement menu name must be specified in the field WEBBOL-REPLACE-MENU. | |
| 10 WEBBOL-FOCUS-TYPE | PIC X | VALUE SPACES. | When a WEBBOL-FIELD-FOCUS field is specified, it allows you to choose whether the system will focus and scroll to the field or just focus. |
| 88 WEBBOL-FOCUS-SCROLL-TO | VALUE ' '. | Indicates you want the system to scroll to and focus the field specified in WEBBOL-FIELD-FOCUS. | |
| 88 WEBBOL-FOCUS-ONLY | VALUE 'O'. | Indicates you want the system to only focus the field specified in WEBBOL-FIELD-FOCUS. | |
| 10 WEBBOL-IPAD-INIT-SCALE | PIC XXX | VALUE SPACES. | The initial (and minimum) scale of this device. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 1.2 ect |
| 10 WEBBOL-IPAD-MAX-SCALE | PIC XXX | VALUE SPACES. | The maximum zoom scale this device is allowed. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 2.0, ect. |
| 10 WEBBOL-IPAD-SCALABLE | PIC X | VALUE SPACES. | Indicates whether this device can be zoomed at all. Or whether it is a fixed scale |
| 88 WEBBOL-IPAD-SCALABLE-YES | VALUE ' '. | Indicates it can be zoomed to the WEBBOL MAX SCALE | |
| 88 WEBBOL-IPAD-SCALABLE-no | VALUE 'O'. | Indicates it is fixed at the WEBBOL INIT SCALE. Cannot be zoomed. | |
| 10 WEBBOL-IPHONE-INIT-SCALE | PIC XXX | VALUE SPACES. | The initial (and minimum) scale of this device. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 1.2 ect |
| 10 WEBBOL-IPHONE-MAX-SCALE | PIC XXX | VALUE SPACES. | The maximum zoom scale this device is allowed. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 2.0, ect. |
| 10 WEBBOL-IPHONE-SCALABLE | PIC X | VALUE SPACES. | Indicates whether this device can be zoomed at all. Or whether it is a fixed scale |
| 88 WEBBOL-IPHONE-SCALABLE-YES | VALUE ' '. | Indicates it can be zoomed to the WEBBOL MAX SCALE | |
| 88 WEBBOL-IPHONE-SCALABLE-no | VALUE 'O'. | Indicates it is fixed at the WEBBOL INIT SCALE. Cannot be zoomed. | |
| 10 WEBBOL-DROID-INIT-SCALE | PIC XXX | VALUE SPACES. | The initial (and minimum) scale of this device. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 1.2 ect |
| 10 WEBBOL-DROID-MAX-SCALE | PIC XXX | VALUE SPACES. | The maximum zoom scale this device is allowed. Valid values are spaces (let the OS figure it out) or 1.0, 1.1, 2.0, ect. |
| 10 WEBBOL-DROID-SCALABLE | PIC X | VALUE SPACES. | Indicates whether this device can be zoomed at all. Or whether it is a fixed scale |
| 88 WEBBOL-DROID-SCALABLE-YES | VALUE ' '. | Indicates it can be zoomed to the WEBBOL MAX SCALE | |
| 88 WEBBOL-DROID-SCALABLE-no | VALUE 'O'. | Indicates it is fixed at the WEBBOL INIT SCALE. Cannot be zoomed. | |
| 10 WEBBOL-REFRESH-SECONDS | PIC 999 | VALUE 0. | Specifies, in seconds, if and when the program will automatically return back to you. Without any user intervention. A value of zero indicates there will not be an automatic return. This is useful for dashboard style processing. |
| 10 WEBBOL-POPUP-WIDTH | PIC 999 | VALUE 030. | The width of the displayed PopUp form. The default is 30em. An "em" is a scalable unit where 1 is equal to the current font size. Scrollbar will appear if needed. A value of zero will trigger the system to calculate the width for you. |
| 10 WEBBOL-POPUP-HEIGHT | PIC 999 | VALUE 030. | The height of the displayed PopUp form. The default is 30em. An "em" is a scalable unit where 1 is equal to the current font size. Scrollbar will appear if needed. A value of zero will trigger the system to calculate the height for you. |
| 10 WEBBOL-POPUP-LOCATION-TOP | PIC 9(4) | VALUE 0100. | The popup location down from the top edge of the parent form. The default is 100px. An "px" is a pixel or a single dot on the computer screen. e.g. 100px would mean the top edge of the popup form would be displayed at 100 pixels from the top edge of the parent form. NOTE: This field also controls the position of WebBOL popup messages. |
| 10 WEBBOL-POPUP-LOCATION-LEFT | PIC 9(4) | VALUE 0100. | The popup location right of the left edge of the parent form. The default is 100px. An "px" is a pixel or a single dot on the computer screen. e.g. 100px would mean the left edge of the popup form would be displayed at 100 pixels from the left edge of of the parent form. NOTE: This field also controls the position of WebBOL popup messages. |
| 10 WEBBOL-ORIGINATION | PIC X | VALUE SPACES. | Indicates where (the request origin) this program was called. |
| 88 WEBBOL-ORIGINATION-POPUP | VALUE 'P '. | Indicates this program was called as a popup window. | |
| 10 WEBBOL-SPECIAL-PROCESSING | PIC X | VALUE SPACES. | For WebBOL requests outside the normal screen processing. See below. |
| 88 WEBBOL-PAGEBACK-TIMEOUT | VALUE 'Y '. | Indicates any processing of the previous browser window should be denied with a timeout screen. The user may still use the browser pageback button to view the previous screen. However, any request to reprocess that screen (e.g. button click) will result in a timeout screen being displayed. | |
| 88 WEBBOL-PAGEBACK-REFRESH | VALUE 'R '. | Indicates any processing of the previous browser window will be reloaded/refreshed for the program to decide. The program will get a WEBBOL-REFRESH action or WEBBOL-POPUP-CLOSED action. Usually this attribute is set to force a logon screen if the browser back button is clicked. | |
| 10 WEBBOL-DEFAULT-DECIMAL-TYPE | PIC X | VALUE SPACES. | Which decimal/comma numeric presentation is appropiate. This value is defaulted by the WebBOL Editor properties but can be dynamically overidden during execution. See below. |
| 88 WEBBOL-NUMERIC-USA | VALUE 'U '. | Indicates the USA standard of using a period (.) for decimal point numeric entry and display. | |
| 88 WEBBOL-NUMERIC-EUROPE | VALUE 'E '. | Indicates the Europeon standard of using a comma (,) for decimal point numeric entry and display. | |
We call individual screen items "controls" because they define what the screen looks like, how the data is presented, and choices that can be made. At the present time there are 10 different controls support by WebBOL. Each control has many selectable features. The 10 supported controls are:
The next part of the copybook contain fields that define events or data for a single control. These fields that can be examined to determine if data was selected or changed. These fields can be changed thereby changing the form that is displayed. For example, You might change the text color of a field from black to red to indicate an error.
Every control was assigned a name, by you, when created by the WebBOL editor. We add a suffix to this name to create names for events and data fields. For example, you created a static text control with the name of "Text1-Header". WebBOL creates an additional field called "Text1-Header-txtc" indicating the text color.
Below is a COBOL list of these individual control field suffixes.
| * ACS Corporation WebBOL Forms Record CONTROL PORTION | |
| Static Text Controls | |
| -TXTC | Is the color of this text. |
| -BKGC | Is the background color of this text. |
| -your data name here | This is the actual text of your control. It can be change dynamically. |
| -URL | Is the Web Address associated with this text (http://). |
| AlphaNumeric Text Input Controls | |
| -RTN | Indicates if this control value has changed. |
| -RYES | A value of Y indicates it has changed. |
| -DIS | Whether to disable or hide the control or not. See values below. |
| -DYES | A value of Y disables this control. No input is allowed. However, it is greyed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| -TXTC | Is the color of this text. |
| -BKGC | Is the background color of this text. |
| -your data name here | The value of this control. Can be changed dynamically.It could be a uploaded file name, password, a normal entry like address or geolocation data (see next description) |
| GeoLocation | Used to retrieve the client's Latitude / Longitude co-ordinates.(These co-ordinates can be mapped using GeoLocation mapping. See the Listbox options for mapping.) A special 200 byte structure is presented in the copybook: 05 your-data-name-here. 10 your-data-name-here-FREQ PIC 999. Is the geolocation sampling frequency in seconds. Setting to zero will retrieve one latitude/longitude set. Setting to 030 will retieve two geolocation sets 30 seconds apart and calculate the distance. 10 your-data-name-here-OLAT PIC X(15) Is the old latitude from the previous retrieval. 10 your-data-name-here-OLON PIC X(15) Is the old longitude from the previous retrieval. 10 your-data-name-here-NLAT PIC X(15) Is the NEW latitude from the previous retrieval. 10 your-data-name-here-NLON PIC X(15) Is the NEW longitude from the previous retrieval. 10 your-data-name-here-ACUR PIC 9(5) Is the accuracy of the new retrieval. In meters. 80 or less is very accurate. Cell phones or tablets with GPS are most accurate. 10 your-data-name-here-HDNG PIC 999 Is the heading of the new retrieval. In 0-359 degrees. Not all browsers support this attribute. 999 is undefined. 10 your-data-name-here-SPED PIC 999 Is the speed of the new retrieval. In meters per second. Not all browsers support this attribute. 999 is undefined. 10 your-data-name-here-DSTN PIC 9(5) Is the distance of the new retrieval. In meters. It requires 2 samples (an old and new latitude/longitued) in the structure. 99999 is uncalculated. |
| Numeric Input Controls | |
| -RTN | ndicates if this control value has changed. |
| -RYES | A value of Y indicates it has changed. |
| -DIS | Whether to disable or hide the control or not. See values below. |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. Nothing is visible. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| -TXTC | Is the color of the numbers. |
| -BKGC | Is the background color of this control. |
| -your data name here | The value of this control. Can be changed dynamically. |
Special Processing Note: Long/Slow Clicking a numeric text field will display a popup calculator. A Long/Slow Click is when theclient clicks (or presses on touch screens) the field for more than one (1) second before releasing. | |
| Multiline Text Controls | |
| -DIS | Whether to disable or hide the control or not. See values below |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| -RED | Whether to mark the control as read-only or not. See values below. |
| -RYES | A value of R makes this control read only. No input is allowed. It is NOT grayed out. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| -you data name here | Is the actual multiline text that was entered by the client. Be ware that it is not like a windows text file. Only a x'0D' is returned from the client browser. Not a full CR LF. |
| Button Controls | |
| -CLKD | Whether the button has been clicked or not. |
| -DIS | Whether to disable or hide the control or not. See values below. |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| -TAB | Is the numeric tabbing position/sequence of this button. |
| -TXTC | Is the color of text or label associated with this button. |
| -BKGC | Is the background color of this control. |
| -LBL | The text/label of this button, if any. Graphical buttons often have no text/label. If so, it may be changed dynamically. |
| Image Controls | |
| -RTN | If a immediate return on click. See value below. |
| -RYES | A value of Y indicates yes, the user clicked the image. |
| -URL | Is the Web Address associated with this link (http://). |
| ListBox Controls | |
| -MAX | Is the maximum number of rows allowed in the entire listbox or listview. |
| -ROW | Is the maximum number of rows to display in this listbox or listview. May be changed dynamically. |
| -RTN | If a immediate return on change was requested. See value below |
| -RYES | A value of Y indicates yes, the user selection changed and control was immediately returned to your DLL. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| Data Fields Below occur -MAX times. Once for every row in the listbox or listview. | |
| -L1 | The group level data item for all the rows in the listbox or listview. |
| -DAT | The ListBox entry value. For example as list of states an entry value could be "New York". If the Date Picker style was selected, it contains a date. If a Color Picker style was selected, it contains a color. If the Map Coordinantes was selected, it allows you to draw a map for the client. You can mark a particular spot on the map. You can specify several digital waypoints or addresses to map a route. It will calculate distances between the different points on the route. It can optimize the route. It can show traffic. You specify parameters (map size and options) in the first 3 occurrences of the listbox. The remaining occurrences are for points on a route. The structure follows: * OCCURRENCE 1 is for your Google Mapping API Key, the system uses google api's to draw the map. Search "Google Maps API Key" to get a key or try https://developers.google.com/maps/documentation/javascript/get-api-key * OCCURRENCE 2 is a digital latitude/longitude map marker. Do Not Use an address or degrees/minutes/seconds format. It has 5 parameters. Each parameter is separated by a comma. Use 0,0 when no marker is desired. It puts an X on the map. Use 0,0 when no marker is desired. Latitude Longitude Sound play switch (Y/N) Color for Marker in Hex (#f00000 is red) Title/Balloon Info for Marker e.g. 35.8884,-82.878432,Y,#f00000,New Driver Location Found ! * OCCURRENCE 3 has 4 parameters to control the map. It controls map height, width, traffic and routing. Each parameter is separated by a comma. 3 digit height: px (pixels) or % (percent of screen) 3 digit width: px (pixels) or % (percent of screen) display traffic or not, values: traffic or none optimize route or not, values: true or false e.g. 450px,50%,traffic,true e.g. 60%,50%,none,false * OCCURRENCE 4 - 28 are addresses or digital waypoints. Do Not Use degrees/minutes/seconds format. The more complete the address, the more accurate mapping. If digital, separate lat/long with a comma. e.g. 35.8884,-82.878432 Partial address is ok. e.g. Atlanta, GA |
| -L2 | *Listview style only.The group level data item for all the columns in the listview. |
| -COL | *Listview style only. The ListBox column entry value. Listview style can have multiple columns. The first occurrence of this field defines the headings for each column. |
| -GRP | Whether this entry is a group entry or not. For example, "Trees" would be a group item. "Pine Tree" would not. Group entries are not required. Group entries are seen in bold text. See value below |
| -GYES | A value of Y indicates this listbox data entry is a group item. |
| -SEL | Whether the user selected this item or not. See value below |
| -SYES | A value of Y indicates yes, the user selected this item. NOTE: You may find this value more than once if a listbox has been defined for "multiple selections". |
| -DIS | Whether to disable or hide the control or not. See values below |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| -AYES | A value of A accents this particular entry (using Accent Color) |
| -ALN | *Listview style only. Defines the data's alignment and input for a given column. See values below. |
| -ALNL | A value of L aligns the data to the left. No data input is allowed. |
| -ALNR | A value of R aligns the data to the right. No data input is allowed. |
| -ALNC | A value of C aligns the data to the center. No data input is allowed. |
| -ALNA | A value of A aligns the data to the left. Alpha-Numeric Data input is allowed. |
| -ALNN | A value of N aligns the data to the right. Numeric Data input is allowed. |
| -ALNK | A value of K aligns the data to the center with a CheckBox Control. Set/Detect a check with a value of 'Y' in the -COL field. |
| -SET | *Listview style only. Defines the 1st row to visually display. See values below. |
| -SETY | A value of Y displays this as the 1st row the user will see. |
ListView Advanced Programing Topics | |
| Radio Button Controls | |
| -MAX | Is the maximum number of radio buttons in this group. |
| -RTN | If a immediate return on change was requested. See value below |
| -RYES | A value of Y indicates yes, the user selection changed and control returned immediately to your DLL. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| Data Fields Below occur -MAX times. Once for every radio button in this group. For example if the choices are "Red", "Green", or "Blue". -MAX would be 3 for 3 radio buttons in this group. | |
| -DAT | The radio button label. For example the label could be "Red". |
| -CYES | Whether the control was checked or not. See values below |
| -DIS | Whether to disable or hide the control or not. See values below |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -DALL | A value of L disables all the radio buttons. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| Check Box Controls | |
| -CYES | Indicates if the box was checked or not. See value below |
| -RYES | A value of Y indicates yes, the user checked the box. |
| -RTN | If a immediate return on change was requested. See value below |
| -RYES | A value of Y indicates yes, the user selection changed and control returned immediately to your DLL. |
| -DIS | Whether to disable or hide the control or not. See values below |
| -DYES | A value of Y disables this control. No input is allowed. However, it is grayed out and still visible. |
| -HYES | A value of H hides this control. No text is visible. |
| -TAB | Is the numeric tabbing position/sequence of this control. |
| -LBL | The check box label. For example a label could be "Check to include premium leather package". |
| InLine Link Controls | |
| -URL | Is the Web Address associated with this link (http://). |
Other Processing
Since programming for the web is truly distributed, your DLL is over/executed before the webpage HTML has been generated. Hence, debugging your program is done a little differently. DISPLAYING information during the execution of your DLL will show at the top of generated web page. Right-clicking a web page, then selecting the "View Source" option will show your displayed data also. Using this technique can help you debug your program.
Color Control
You can dynamically control 6 different colors or textures. The colors that can be changed "on the fly" are:
- The Menu Bar Background Color
- The Menu Bar Text Color
- The Menu Bar Hover Color
- The Main Screen Background Color or texture
- The PopUp Screen Title Bar Color
- The PopUp Screen PopUp Background Color or texture.
A texture is a image file such as a .jpg or .png whose picture resemble a texture. Like marble or wood.
To signal the WebBOL system to change the colors:
1. Create an evironmental variable named "WEBBOL-COLOR-STRING"
2. Set the value of this environmental variable with the 6 colors or textures listed above, separated by a comma.
For example, "WEBBOL-COLOR-STRING=red,green,blue,marble.jpg,pink,lightwood.png"
A few notes.
1. Since webservers kill everything after program completion, you will have to set this variable everytime you expect those
colors to display. Else the default colors will display.
2. There are only 2 color values that allow a texture substitution. See lists above.
3. If a texture is used, the file must exist. The textures used above were for example only.
Execution SignOn
You can userid/password protect the WebBOL-Execute program. A few have complained about the security with Microsoft iis. i.e. Finding and maintaining the userids and passwords. No logoff etc. Now you can create a simple text file (WebBOL-Execute-IDS.txt) with the format of userid::password on each line. e.g. JohnSmith::mypw The system will take care of the rest, prompting anybody for a userid and password if this file exists. Else it will operate as it always. BEWARE: This is upper/lower case sensitive for userid as well as password. You can execute the script "Webbol-Execute.cgi?@SIGNOFF=Y" to end the session. Otherwise the session will end when the browser closes. More than 5 signon attemps within a 30 minute period will suspend signon for 30 minutes. Cookies must be allowed for this to work. The environmental parameter REMOTE_USER will contain the valid signon id.
Special Note: If you are linking to WebBOL system, with this SignOn capability, via a custom HTML then make sure your custom HTML is not using frameset tag.Apple Safari will not process cookies properly. FireFox and Internet Explorer will. If you must use the frameset html tag, then have the WebBOL link (the anchor tag) execute to its own target page. e.g. target='_blank'
Screen/Form Editor SignOn
You can userid/password protect the WebBOL-Edit program. A few have complained about a security problem having the screen editor in the same location as the production system. i.e. anybody with knowledge of WebBOL could possibly execute the editor and screw up the screen definitions. There was a burden of having to keep screens/forms in a different folder. Now you can create a simple text file (WebBOL-Edit-IDS.txt) with the format of userid::password on each line. e.g. JohnSmith::mypw The system will take care of the rest, prompting anybody for a userid and password if this file exists. Else itwill operate as it always. BEWARE: This is upper/lower case sensitive for userid as well as password.The session will end when the browser closes. More than 5 signon attemps within a 30 minute period will suspend signon for 30 minutes. Cookies must be allowed for this to work.
SignOff
You can implement a "SignOff" (logoff is you prefer) button/image if using WebBOL SignOn function mentioned above. Create a button/image with a URL of http:your website here/Webbol-Execute.cgi?@SIGNOFF=Y (Make sure Signoff is all caps).