Extending Your Advanced Revelation Applications (Migration,Warehousing,Web)

Table of Contents

Introduction

Advanced Revelation[#I1]

OpenInsight for Workgroups[#I2]

A Note on Sharing Data Between Advanced Revelation and OpenInsight[#I3]

Low-Level Extension

Extend Your Application to Contemporary Environments[#L1]

Mid-Level Extensions

Extend Your Application to the Web[#M1]

Extend Your Data to Other Databases[#M2]

Extend Parts of Your Application to Graphical User Interface[#M3]

High-Level Extension

Port Your Entire Application to Windows[#H1]

Appendix 1

Sharing Data Between Advanced Revelation and OpenInsight[#A1A]

Program for Advanced Revelation 2.12 & Below[#A1B]

Program for Advanced Revelation 3.0 & Above[#A1C]

Appendix 2

Network Product Support Matrix[#A2]

Appendix 3

Upgrading to Advanced Revelation 3.1x[#A3]

Appendix 4

Attaching Advanced Revelation Tables to OpenInsight[#A4]

Appendix 5

Setting Up OpenInsight as a Web Server Extension[#A5]

Appendix 6

OpenInsight Form Controls and HTML[#A6]

Appendix 7

The SUBMIT Event[#A7]

Appendix 8

Internet QuickEvents[#A8]

Appendix 9

Custom Internet Procedures[#A9]

Appendix 10

Sample Code for a Custom Internet Procedure[#A10]

 

INTRODUCTION

Advanced Revelation

There are over 1 million licensed users of Advanced Revelation applications in the world today. This number is a testament both to Advanced Revelation as a robust, flexible development environment and to the developers who created powerful and lasting mission-critical applications with that environment. The world has changed since Advanced Revelation was first introduced in 1987   Graphical User Interface, new networks and operating systems, and the Internet are just a couple of the innovations that have moved the application development industry in new directions. Changes do not necessarily mean that Advanced Revelation applications must be abandoned. Rather, they can be extended to take advantage of the new technologies and implementations. There are three levels of extension that can be implemented, based on your organization s needs:

        Low-level extension   if your organization only needs to ensure that your application continues to run on contemporary networks and operating systems, and does not need to take advantage of graphical user interface, the web, or other such innovations, low-level extension is an appropriate choice.

        Mid-level extension   This level of extension enables you to bring your data to other databases or pieces of your application to the web or to Windows quickly and easily without disrupting the operation of your base system.

        High-level extension   This level of extension is appropriate for organizations who are looking to completely move their entire application to contemporary technologies.

The applications developed with Advanced Revelation are scalable, robust, mission-critical applications. As a result, organizations are sometimes reluctant to replace these applications   the risk of taking a line-of-business application that works off line can be too high to justify the new features/technologies gained by the new application. If this is the case, there is a way to take advantage of new technologies incrementally, without having to change the base Advanced Revelation application   by extending the application. Because you can choose the level of extension that is appropriate for your company, you can protect your investment in Advanced Revelation data and applications while, at the same time, ensuring the level of contemporary compatibility required by your organization.

 

OpenInsight for Workgroups

OpenInsight for Workgroups is generally considered a full-featured application development environment that is used instead of Advanced Revelation to develop Windows applications. OpenInsight is, however, can be used in conjunction with Advanced Revelation. OpenInsight offers a set of tools that extend the Advanced Revelation application development environment and provides a third tier in a client/server environment. These tools enable developers to add such functionality as multi-source data access, event-driven business logic, dynamic HTML publishing, and interactive internet access. OpenInsight provides the services that enable such new functionality to enhance a deployed Advanced Revelation application without requiring the re-engineering of the  base  Advanced Revelation windows, programs, or other application components.

 

A Note on Sharing Data Between Advanced Revelation and OpenInsight

It is possible to share data between an Advanced Revelation application and an OpenInsight application. This may, however, require a level of investment in preparing your Advanced Revelation application for concurrent access by the OpenInsight extensions. Note that there is a direct correlation between the level of extension you wish to implement, and the investment required to reach that level. Appendix 1[#A1A] highlights the steps required to prepare your Advanced Revelation application to share data, as well as some of the issues you need to consider when planning your extensions.

 

LOW-LEVEL EXTENSION

Extend Your Application to Contemporary Environments

Advanced Revelation pre-dates the advent of the Windows operating system. Nevertheless, the majority of Advanced Revelation users would like to continue using their application(s) while also taking advantage of the contemporary Windows environment. The same is true for networking technologies. Revelation Software has developed a series of add-on products that enable Advanced Revelation application to run on contemporary networking and client environments. The Revelation Network Products provide enhanced performance and reduce network errors for applications using the Revelation Linear Hash filing system. These three Network Products are: the Revelation Netware Loadable Module (NLM), the Revelation NT Service and the Network Performance Pack (NPP). In order to ensure the optimum performing environment it is imperative that the proper Network Product is installed. This is based upon network is installed. The rule to use in determining which network product to use is:

 

Development  Network Environment   Network Product
Advanced Revelation 2.03+on a Novell Network then useRevelation NLM
Advanced Revelation 2.03+on a Microsoft NT Server then useRevelation NT Service
Advanced Revelation 2.03+on a any other network

(that supports "byte range locking")
then useNetwork Performance Pack

 

If you are running Windows 95 or Windows NT workstations, you are required to use the "All Networks" driver or the Revelation NLM . The  All Networks  driver and the Revelation NLM both resolve problems introduced with Opportunistic Locking and Write-Behind Caching implemented in Win95/WinNT. 

 

The Network Rule must be followed without exception, otherwise you will be running your application in a non-optimal, error-prone configuration. Adhering to the Network Rule will ensure the performance and integrity of your application on the spectrum of Windows clients (3.1, 95, 98 and NT) and on your network (all versions of NT and Novell). Furthermore, because the Revelation Network Products are truly plug-in products, you can make your system instantly contemporary.

 

What You Need

        Advanced Revelation Development   no change.

        Advanced Revelation Deployment   no change.

        Revelation Network Product   Revelation NLM for Novell network, Revelation NT Service for Microsoft NT Server, or Revelation Network Performance Pack (NPP) for all other networks that support byte range locking.

 

Other Resources and Information

        Choosing the Correct Revelation Network Product for Your Network

        Network Product Support Matrix

        Revelation NLM for Advanced Revelation Users

        Revelation NLM Documentation

        Revelation NT Service Documentation

        NLM Tech FAQ

        NT Service Tech FAQ

        NLM Troubleshooting

        Revelation NT Service Overview

        Revelation NLM Technical Support Checklist for OpenInsight for Workgroups and Advanced Revelation

 

MID-LEVEL EXTENSIONS

Extend Your Application to the Web

You can extend your Advanced Revelation application to the web by providing access via a browser. Extending your data to the web enables you to provide information to remote users. Extending your application enables remote users to access the application itself and perform updates. For example, you might enable customers to update their contact information. Regional sales representatives could enter orders from customer sites. Remote managers could perform updates. These options are possible by providing a web front-end to portions of the Advanced Revelation application; this can be done without affecting the application itself or the network environment in which the application is running.

 

OpenInsight for Workgroups provides dynamic web publishing capabilities that can be used to extend your Advanced Revelation application, or portions of it, to the web. It is important to note that you must be at Advanced Revelation version 3.1x for concurrent access to Advanced Revelation. The following outlines the steps to extend Advanced Revelation data to the web via OpenInsight s dynamic web publishing capabilities:

 

Prepare for publishing your data to the web

        Ensure that you are at Advanced Revelation version 3.1x for concurrent access. If you are not, upgrade to this version. See Appendix 3[#A3] for information on upgrading your Advanced Revelation application. If non-concurrent access is sufficient, you just need to make of copy of your data for use by your web extensions.

        Acquire a copy of OpenInsight for Workgroups for each developer developing the web publishing capabilities.

        Install OpenInsight on a web server that can  see  the Advanced Revelation tables you wish to extend. See Appendix 5[#A5] for instructions on how to set up OpenInsight as a web server.

        In OpenInsight, attach the Advanced Revelation tables you wish to extend. See Appendix 4[#A4] for details on attaching Advanced Revelation tables to OpenInsight.

Create a web page with the OpenInsight Form Designer. You can use OpenInsight s Form Designer to create a static HTML page.

        Launch the OpenInsight Form Designer. Create a new form.

        Design your form in the usual way, dragging controls onto the form and adjusting their appearance. See Appendix 6[#A6] for information on using controls for HTML publishing.

Create a SUBMIT event for your form. HTML pages do not respond to events in the way that OpenInsight forms and controls do. You can, however, simulate events and event-handler behavior to add dynamic functionality to the HTML page. Internet-specific functionality is added to the OpenInsight form before it is converted to an HTML document. In OpenInsight we refer to this document as an OI Page. The SUBMIT event and its event handler (QuickEvent or custom Internet procedure) provide the mechanism for converting OpenInsight functionality into HTML code and for communicating with OICGI. SeeAppendix 7[#A7] for the controls that the SUBMIT event can be used for, and the QuickEvent options for the SUBMIT event.

Add Internet QuickEvents or custom Internet procedures to the form. In order to provide logic behind the controls on the HTML form, you need to add QuickEvents and/or custom Internet procedures to the form. As of version 3.5, the Internet QuickEvents include: Publish Report, Publish Document, Load HTML Form, Read Into HTML Form, and Write Into HTML Form. See Appendix 8[#A8] for information on Internet QuickEvents. OpenInsight for Workgroups also delivers several pre-defined Internet procedures (i.e. INET_REPOS, INET_RLIST, INET_TRACE). Future releases will include new Internet procedures. OpenInsight also gives you the flexibility to write your own. See Appendix 9[#A9] for information on writing custom Internet procedures.

Deploy your Advanced Revelation web front-end. When you have completed the web-front end of your Advanced Revelation application, you need to install the Web Deployment Pack (WDP) to deploy your application to an unlimited number of web browsers. (Note this does not change the implementation or licensing of your  traditional  networked users.)

 

What You Need

        Advanced Revelation Development   If you are at version 2.12 or below, you will need to upgrade to version 3.1x for concurrent use. If you are at version 3.1x, no change is required.

        Advanced Revelation Deployment   no change.

        OpenInsight for Workgroups Development   OpenInsight for Workgroups.

        OpenInsight for Workgroups Deployment   Web Deployment Pack.

        Web server software that supports CGI 1.1. (If you do not have a web server, you can go to http://www.softseek.com/Internet/Web_Publishing_Tools/Servers/index.html and download free web server software so that you can experiment with OpenInsight s web capabilities.)

        A browser that supports HTML 3.0.

 

Other Resources And Information

        Getting to the Web with OpenInsight for Workgroups: a Step-by-Step Guide

        New Internet Publishing Chapter from the OpenInsight for Workgroups 3.4 Guide to Application Development

        Web Publishing: Using controls to pass parameters

        Hybrid Applications: The Sensible First Step to Web-Enabling Critical Applications

        Server Is Not Available or CGI Has No Access Rights

        Licensing Guide to OpenInsight for Workgroups (also available from Revelation Software Customer Service)

 

Extend Your Data to Other Databases

There are a variety of reasons organizations might want to extend their Advanced Revelation data to other databases. For example, an organization may want to make data more broadly available without deploying the application itself to a larger group of people. An organization may want to use data for reporting or decision making without compromising the security or performance of the production system. Or, an organization may want to use reporting or other data management tools that don t natively access the Advanced Revelation data. Finally, an organization may also want to maintain all data   from multiple sources   in a single corporate data warehouse. All of these options are possible through Data Warehousing.

 

OpenInsight for Workgroups provides a data warehousing facility that can be used to extend Advanced Revelation data. It is important to note that you must be at Advanced Revelation version 3.1x for concurrent access to Advanced Revelation. The following outlines the steps to extend Advanced Revelation data to other databases via OpenInsight s Data Warehousing tools:

Prepare for data warehousing

        Ensure that you are at Advanced Revelation version 3.1x for concurrent access. If you are not, upgrade to this version. See Appendix 3[#A3] for information on upgrading your Advanced Revelation application. If non-concurrent access is sufficient, you just need to make of copy of your data for use by your warehousing procedures.

        Acquire a copy of OpenInsight for Workgroups for each developer who will be developing the data warehousing capabilities.

        Install OpenInsight in a location that can  see  the Advanced Revelation tables you wish to extend.

        In OpenInsight, attach the Advanced Revelation tables you wish to extend. See Appendix 4[#A4] for details on attaching Advanced Revelation tables to OpenInsight.

Create a warehouse procedure. The OpenInsight Create Warehouse Procedure wizard creates a warehouse procedure   customizable BASIC+ code containing the logic to warehouse a native table, including the ability to: create, clear and drop the necessary warehouse tables; select native table information to add to the warehouse; and perform the actual process of data warehousing.

        Start and set up options for a Warehouse Procedure. This step involves selecting the linear hash table to be warehoused. Using the wizard, select options, such as case sensitivity and defaults for LH data types, including the corresponding DataSet data types, SQL data types, etc. This step also enables you to specify the conversion necessary to turn the native table data into a format that the DataSet understands. These options are automatically stored for subsequent use by the wizard.

        Create the primary table, which contains the OpenInsight single-value data, and scripts. Standard SQL scripts are then generated; these scripts can be fully customized.

        Create the secondary table, containing the OpenInsight multi-value data. If there is more than one group of AMV data, then this part of the wizard process needs to be performed for each group. In this step, define the SQL table(s), and scripts are generated. These scripts can also be customized.

        Create the warehouse procedure and DataSets. In this final step, the wizard creates a BASIC+ stored procedure. In addition, a DataSet is created for each warehoused SQL table. The BASIC+ stored procedure and the DataSet are both customizable.

Select the warehouse procedures to be executed. Use the OpenInsight Warehouse Manager wizard to select the warehouse procedures to be executed. At this point, you are given the option of creating new SQL tables, or dropping and recreating existing tables. The warehousing is scheduled and automatically executed at the specified time. When the warehouse procedure is executed, a page is displayed indicating the progress of the processing of the warehouse procedure. Processing can be paused or stopped by clicking the appropriate button. A history log lists the success or failure of the warehousing, and lists any errors that may have occurred.

Deploy your warehousing capabilities. Once you have created and defined your warehouse procedures, you need to install a Development-Ready Server Deployment Pack (SDP) to deploy the new capabilities. Each user executing warehousing procedures requires a properly licensed Development-Ready SDP.

 

What You Need

        Advanced Revelation Development   If you are at version 2.12 or below, you will need to upgrade to version 3.1x for concurrent use. If you are at version 3.1x, no change is required.

        Advanced Revelation Deployment   no change.

        OpenInsight for Workgroups Development   OpenInsight for Workgroups.

        OpenInsight for Workgroups Deployment   Develelopment-Ready Server Deployment Pack.

        Other database for your data warehouse: SQL Server, Oracle, any ODBC-compliant database. For ODBC, you will also need the appropriate 16-bit ODBC drivers.

 

Other Resources and Information

        Using the Data Warehousing Feature in OpenInsight (versions 3.3 and above)

        Data Warehousing: SQL Server Specifics

        Licensing Guide to OpenInsight for Workgroups (also available from Revelation Software Customer Service)

 

Extend Parts of Your Application to Graphical User Interface

The decision to move to a graphical user interface (GUI) does not have to be an all-or-nothing one when it comes to Advanced Revelation applications. Instead, you can easily  modularize  your application by porting portions of it to Windows, leaving the rest intact, and having all modules continue to work together as a single application. You could also extend the application by creating new modules that take advantage of a GUI, without changing the base application. For example, a company has an inventory tracking system that is used by the warehouse manager and the accounting department. The portion of the application used by the warehouse manager is effective and requires no updates. The accounting department, however, needs to update the user interface and to take advantage of event-orient processing. You can modularize the application by porting only the accounting portion to Windows, using OpenInsight. In this same organization, the marketing department would like to be able to use this application to enable the generation of catalogues. You could add a new module, one for use by the marketing department, using OpenInsight and thus providing new functionality in a contemporary interface. This modularization will not affect the underlying Advanced Revelation application, portions of which are still being used.

 

Plan for modularizaion

        Develop a modularization plan. Determine which portions or modules of your application you want to port, and which elements of the application (dictionary items, programs, stored procedures, etc.) will be affected.

Prepare for modularizaion

        Ensure that you are at Advanced Revelation version 3.1x. If you are not, upgrade to this version. See Appendix 3[#A3] for information on upgrading your Advanced Revelation application.

        Acquire a copy of OpenInsight for Workgroups for each developer who will be developing the data warehousing capabilities.

        Install OpenInsight in a location that can  see  the Advanced Revelation tables you wish to extend.

        In OpenInsight, attach the Advanced Revelation tables you wish to extend. See Appendix 4[#A4] for details on attaching Advanced Revelation tables to OpenInsight.

Prepare for concurrent access. See Appendix 1[#A1] for details.

Create your user interface. OpenInsight has a feature called  Quick Form  that enables you to quickly build your forms. From there, you can add popular graphic controls, such as radio button, checkboxes, icons and bitmaps with point-and-click simplicity.

Port your business logic.

        Porting programs and stored procedures from Advanced Revelation to Opensinght is easy as OpenInsight s scripting language, BASIC+, is 90% compatible with R/Basic. If you developing are a new module, the new business logic will be easy to program because you will already be familiar with the language system.

        You can also move your MFS ; all you need to do is remove any stop commands (cannot be used with Windows).

 

What You Need

        Advanced Revelation Development   If you are at version 2.12 or below, you will need to upgrade to version 3.1x for concurrent use. If you are at version 3.1x, no change is required.

        Advanced Revelation Deployment   no change.

        OpenInsight for Workgroups Development   OpenInsight for Workgroups.

        OpenInsight for Workgroups Deployment   Server Deployment Packs or Development-Ready Server Deployment Pack.

 

Other Resources and Information

        Converting Advanced Revelation applications to OpenInsight: Perspectives from Developers (also available from Revelation Software Customer Service)

        Defining Factors of Deployment (also available from Revelation Software Customer Service)

 

HIGH-LEVEL EXTENSION

Port Your Entire Application to Windows

While some organizations may only want to port or extend portions of their Advanced Revelation application to a graphical user interface (GUI), others may want to invest in porting their complete application to Windows. The process of porting your entire application is very similar to that of porting portions of your application, except that the application is not modularized. The other difference is that you need not ensure your Advanced Revelation application is at 3.1x because you will not be running the old Advanced Revelation application and the new OpenInsight version concurrently.

 

Prepare for porting your application

        Acquire a copy of OpenInsight for Workgroups for each developer who will be developing the data warehousing capabilities.

        Install OpenInsight in a location that can  see  the Advanced Revelation tables you wish to extend.

        In OpenInsight, attach the Advanced Revelation tables you wish to port. See Appendix 4[#A4] for details on attaching Advanced Revelation tables to OpenInsight.

Create your user interface. OpenInsight has a feature called  Quick Form  that enables you to quickly build your forms. From there, you can add popular graphic controls, such as radio button, checkboxes, icons and bitmaps with point-and-click simplicity.

Port your business logic.

        Porting programs and stored procedures from Advanced Revelation to Opensight is easy as OpenInsight s scripting language, BASIC+, is 90% compatible with R/Basic.

        You can also move your MFS ; all you need to do is remove any stop commands (cannot be used with Windows).

 

What You Need

        OpenInsight for Workgroups Development   OpenInsight for Workgroups.

        OpenInsight for Workgroups Deployment   appropriate deployment packs for your chosen deployment method: runtime, development-ready, or web.

 

Other Resources and Information

        Converting Advanced Revelation applications to OpenInsight: Perspectives from Developers (also available from Revelation Software Customer Service)

        Defining Factors of Deployment (also available from Revelation Software Customer Service)

 

 

APPENDIX 1

Sharing Data Between Advanced Revelation and OpenInsight

There are four basic steps to ensuring concurrent Advanced Revelation and OpenInsight access.

1.     Ensure that your Advanced Revelation application is at the 3.1x level. For information on upgrading to Advanced Revelation 3.1x, see Appendix 4.

2.     Add data types to your dictionary (OpenInsight requires data types).

3.     Remove all of your indexes. (You will reapply them within OpenInsight.)

4.     Clear out old dictionaries from previous versions of Advanced Revelation that have been installed.

5.     If you have any periods in your field names ( field.name ), the periods need to be removed.

We have provided a two programs below, which automate steps 2 - 4 above. 

 

Use a copy of your data

With this option, you simply copy your data, run the preparatory steps, and OpenInsight is ready to work with your data. This option works best when it s not critical that your data be up-to-the-minute; for example, with data warehousing, or if you are publishing data to the web that does not change frequently.

 

Simulate concurrent access to your data

With this option, you create  legal  copies of your fields, comment out the indicated lines in the provided program, and run the preparatory steps. Then, in OpenInsight, use only the  non-dot  fields. This option works best for web publishing and data warehousing extensions.

 

Modularize your data

If using a copy of the data is not appropriate, the preparation to share data will require a slightly higher time investment.  In this case, you will need to identify those portions of your application you wish to extend, and after running the preparatory steps, modify just those windows, programs, etc. that call the required  field.names. 

 

Program for Advanced Revelation 2.12 & Below

 

Declare Subroutine Msg, FSMSG, Unassigned

 

*   This routine will assist in migrating Advanced Revelation files and

*   dictionaries so they can be used with OpenInsight.  Specifically, this

*   program will:

*

*   a) Rename the file by converting any periods (".") with an underscore

*   b) Rename all dictionary fields by converting periods to underscores

*   c) Take off all indexes on the file and creates a record (indexes)

*      that lists the indexes that were on the file; so they can be reapplied

*      within OpenInsight

*   d) Adds data typing to each dictionary field

*   e) Cleans out any dictionary field that may have information from older

*      versions of Advanced Revelation and/or RevG.

*

*   Just as significant is what this program does not do. This program does

*   not adjust the formulas of symbolic fields.  It does not attempt to

*   adjust the formulas, because a period character may have multiple meanings

*   For example, if the formula is @ANS = {QTY} * {UNIT.PRICE} - it is

*   obvious that {UNIT.PRICE} should be converted to {UNIT_PRICE}.  However,

*   if the formula was @ANS = {UNIT_PRICE} * .08 - it is obvious that the

*   period is a decimal and should remain.

*

*   When dealing with the formulas of calculated fields, we recommend that

*   you examine each formula to determine the appropriate action.  There

*   are tools you can use to identify these calculated fields.  If you issue

*   the command:

*

*       SELECT DICT.YOUR_FILE WITH FORMULA CONTAINING '.'  then

*       DICT YOUR_FILE

*

*   The system will provide you a browse list of all symbolic fields that

*   have periods in them, you can then modify the formula in the DICT window.

*   This technique will save you time in examining your fomulas.

*

*   Please run this program only on a backup version of your file until

*   you become familiar with the effects this program will have upon your

*   files.  The most important effect can be on your *existing* Arev

*   application.  Remember, this routine will change the file and field names,

*   therefore, these changes will effect your existing Arev system. (e.g. if

*   you have a file that is called MY.FILE and now it is called MY_FILE, your

*   Arev application will still look for MY.FILE, and you will get a file not

*   found error).  You should only run this routine on files that will

*   be used only by OpenInsight, or if you plan on making the appropriate

*   changes to your Arev application.

*

*   Please be aware that this program assumes you are running in Advanced

*   Revelation 2.12 or below.  If you are running a previous version of

*   Advanced Revelation, please run the program 'CONVERT_FROM_3PLUS'

*

*   Revelation has provided the source code to this routine to allow you

*   to customize the behavior of this program.  The most common behavior

*   you may want to change is the character that the program will use to

*   replace the period (".").  This program converts periods to underscores

*   ("_").  To change the character modify the following line:

 

TransChar = '_'

*

$Insert include,logical

$Insert include,dict.equates

 

Equ No$           To 0

Equ Yes$          To 1

Equ Null$         To Equ Token_All$    To 'ALL' Equ Token_Xref$   To '.XREF'   Indexes =

 

Msg("Please enter the file name to convert",'RIC',FILE,)   * Make sure the file is available Open FILE to FileVar Else    FSMSG()    Stop End   Convertedfile = FILE   * Only perform a rename of the file, if necessary.   if index(FILE,'.',1) then    convert '.' to transChar in convertedfile    sentence = 'renamefile ':FILE:' ':convertedfile    perform sentence end   * Take off all indexing; store index definitions in the variable indexes   open '!':convertedfile to indexvar then     read indexes from indexvar,'*indexes' else null end   WORK: * Let's start working on the dictionary   DictFileName = 'DICT.':ConvertedFile   Open DictFileName To DictHandle Else    FSMSG()    Stop End   * The dictionary is open, lets analyze each field   Done = No$ List = Null$ Select DictHandle Loop   Readnext Key Else     Done = Yes$   End   Until Done   NewKey = Key   If Key[ 1, 1 ] # '%' And Key[ 1, 1 ] # '@' Then      Read Record From DictHandle, Key Then         Remove = No$         * First check to see if the field has any indexes         Begin Case           Case Record< D.E.Xref >             List< -1 > = Key             Remove = Yes$             *           Case Record< D.E.INDEX.FLAG >             Remove = Yes$             *           Case Record< D.E.Relational >             Remove = Yes$             *         End Case           *  If an index was on null out the index information, SI.MFS will         *  take care of the !FILE.   ************************************************************************************* *   If you are simulating concurrent access, comment out the next 8 lines of code   * *************************************************************************************         If Remove Then            Msg( 'B119', Null$, Image, Key )            Record< D.E.Index.Flag  > = Null$            Record< D.E.Xref        > = Null$            Record< D.E.Relational  > = Null$            Record< D.E.Related     > = Null$            Record< D.E.Protect     > = Null$         End *************************************************************************************           * This section adds data types.         Validation = Record<D.E.PATTERN>         Begin Case           Case index(Record<D.E.CONV>,'$',1)             Datatype = "DOLLARS"           Case Validation = '(D)'             Datatype = "DATE"           Case Validation = '(MT)'             Datatype = "TIME"           Case Validation = '(B)'             Datatype = "BOOLEAN"           Case Validation[1,3] = '(MD'             Datatype = "INTEGER"           Case Validation = '(DT)'             Datatype = "TIMEDATE"           Case 1             Length = Record<D.E.LENGTH>             If Length then                Datatype = "VARCHAR(":Length:")"             End Else                Datatype = "VARCHAR(10)"             End         End Case         Record<D.E.GENERIC.TYPE>=Datatype         Record<D.E.PMD>=Datatype           * This section checks multivalue definitions, if it used the old         * format (e.g. M1.1) it will convert it to the proper 'M'         Record<D.E.SM> = record<D.E.SM>[1,1]           * This section clears out older dictionary information         For I = 31 to 54           Record<I>=

        Next I

        Convert '.' to Transchar in NewKey

        Write Record To DictHandle, NewKey Then

*************************************************************************************

*    If you are simulating concurrent access, comment out the next line of code     *

*************************************************************************************

          If Key NE Newkey Then

*************************************************************************************

Delete DictHandle, Key Else Null

          End

          Msg( Null$, 'DB', Image, Null$ )

        End

     End

  End

Repeat

 

ClearSelect

*

* Delete ".Xref" fields.

*

Pos = 1

Loop

Key = List< Pos >

 

*************************************************************************************

*   If you are simulating concurrent access, comment out the next 7 lines of code   *

*************************************************************************************

While Len( Key )

  Key := Token_Xref$

    Delete DictHandle, Key Else

      Null

    End

    Pos += 1

Repeat

*************************************************************************************

 

* Control Records - DICT.MFS will rebuild %fields and %protect.spec% * The indexes is a record created by this routine that documents the * indexes that were on this file.   If Indexes then   Write indexes to DictHandle,'indexes' else null End Delete DictHandle,'%FIELDS%' Else Null Delete DictHandle,'%PROTECT.SPEC%' Else Null   **Program for Advanced Revelation 3.0 & Above** ** ** Declare Subroutine Msg, FSMSG, Unassigned   *   This routine will assist in migrating Advanced Revelation files and *   dictionaries so they can be used with OpenInsight.  Specifically, this *   program will: * *   a) Rename the file by converting any periods (".") with an underscore *   b) Rename all dictionary fields by converting periods to underscores *   c) Take off all indexes on the file and creates a record (indexes) *      that lists the indexes that were on the file; so they can be reapplied *      within OpenInsight *   d) Adds data typing to each dictionary field *   e) Cleans out any dictionary field that may have information from older *      versions of Advanced Revelation and/or RevG. * *   Just as significant is what this program does not do. This program does *   not adjust the formulas of symbolic fields.  It does not attempt to *   adjust the formulas, because a period character may have multiple meanings *   For example, if the formula is @ANS = {QTY} * {UNIT.PRICE} - it is *   obvious that {UNIT.PRICE} should be converted to {UNIT_PRICE}.  However, *   if the formula was @ANS = {UNIT_PRICE} * .08 - it is obvious that the *   period is a decimal and should remain. * *   When dealing with the formulas of calculated fields, we recommend that *   you examine each formula to determine the appropriate action.  There *   are tools you can use to identify these calculated fields.  If you issue *   the command: * *       SELECT DICT.YOUR_FILE WITH FORMULA CONTAINING '.'  then *       DICT YOUR_FILE * *   The system will provide you a browse list of all symbolic fields that *   have periods in them, you can then modify the formula in the DICT window. *   This technique will save you time in examining your fomulas. * *   Please run this program only on a backup version of your file until *   you become familiar with the effects this program will have upon your *   files.  The most important effect can be on your *existing* Arev *   application.  Remember, this routine will change the file and field names, *   therefore, these changes will effect your existing Arev system. (e.g. if *   you have a file that is called MY.FILE and now it is called MY_FILE, your *   Arev application will still look for MY.FILE, and you will get a file not *   found error).  You should only run this routine on files that will *   be used only by OpenInsight, or if you plan on making the appropriate *   changes to your Arev application. * *   Please be aware that this program assumes you are running in Advanced *   Revelation 3.0 or higher.  If you are running a previous version of *   Advanced Revelation, please run the program 'CONVERT_FROM_PRE3' * *   Revelation has provided the source code to this routine to allow you *   to customize the behavior of this program.  The most common behavior *   you may want to change is the character that the program will use to *   replace the period (".").  This program converts periods to underscores *   ("_").  To change the character modify the following line:   TransChar = '_' * $Insert sysinclude,logical $Insert sysinclude,dict.equates   Equ Null$         To '' Equ Token_All$    To 'ALL' Equ Token_Xref$   To '.XREF'   Msg("Please enter the file name to convert",'RIC',FILE,'')   * Make sure the file is available Open FILE to FileVar Else    FSMSG()    Stop End   Convertedfile = FILE   * Only perform a rename of the file, if necessary.   if index(FILE,'.',1) then    convert '.' to transChar in convertedfile    sentence = 'renametable ':FILE:' ':convertedfile    perform sentence end   * Take off all indexing; store index definitions in the variable indexes   open '!':convertedfile to indexvar then     read indexes from indexvar,'*indexes' else null end   WORK: * Let's start working on the dictionary   DictFileName = 'DICT.':ConvertedFile   Open DictFileName To DictHandle Else    FSMSG()    Stop End   * The dictionary is open, lets analyze each field   Done = No$ List = Null$ Select DictHandle Loop   Readnext Key Else     Done = Yes$   End   Until Done   NewKey = Key   If Key[ 1, 1 ] # '%' And Key[ 1, 1 ] # '@' Then      Read Record From DictHandle, Key Then         Remove = No$         * First check to see if the field has any indexes         Begin Case           Case Record< D.E.Xref >             List< -1 > = Key             Remove = Yes$             *           Case Record< D.E.INDEX.FLAG >             Remove = Yes$             *           Case Record< D.E.Relational >             Remove = Yes$             *         End Case           *  If an index was on null out the index information, SI.MFS will         *  take care of the !FILE.   * *   If you are simulating concurrent access, comment out the next 8 lines of code   * *         If Remove Then            Msg( 'B119', Null$, Image, Key )            Record< D.E.Index.Flag  > = Null$            Record< D.E.Xref        > = Null$            Record< D.E.Relational  > = Null$            Record< D.E.Related     > = Null$            Record< D.E.Protect     > = Null$         End *           * This section adds data types.         Validation = Record<D.E.PATTERN>         Begin Case           Case index(Record<D.E.CONV>,'$',1)             Datatype = "DOLLARS"           Case Validation = '(D)'             Datatype = "DATE"           Case Validation = '(MT)'             Datatype = "TIME"           Case Validation = '(B)'             Datatype = "BOOLEAN"           Case Validation[1,3] = '(MD'             Datatype = "INTEGER"           Case Validation = '(DT)'             Datatype = "TIMEDATE"           Case 1             Length = Record<D.E.LENGTH>             If Length then                Datatype = "VARCHAR(":Length:")"             End Else                Datatype = "VARCHAR(10)"             End         End Case         Record<D.E.GENERIC.TYPE>=Datatype         Record<D.E.PMD>=Datatype           * This section checks multivalue definitions, if it used the old         * format (e.g. M1.1) it will convert it to the proper 'M'         Record<D.E.SM> = record<D.E.SM>[1,1]           * This section clears out older dictionary information         For I = 31 to 54           Record<I>=''         Next I         Convert '.' to Transchar in NewKey         Write Record To DictHandle, NewKey Then           If Key NE Newkey Then * *    If you are simulating concurrent access, comment out the next line of code     * *             Delete DictHandle, Key Else Null *           End           Msg( Null$, 'DB', Image, Null$ )         End      End   End Repeat   ClearSelect * * Delete ".Xref" fields. * Pos = 1 Loop Key = List< Pos >   * *   If you are simulating concurrent access, comment out the next 7 lines of code   * * While Len( Key )   Key := Token_Xref$     Delete DictHandle, Key Else       Null     End     Pos += 1 Repeat *   * Control Records - DICT.MFS will rebuild %fields and %protect.spec%

* The indexes is a record created by this routine that documents the

* indexes that were on this file.

 

If unassigned(Indexes) else

  Write indexes to DictHandle,'indexes' else null

End

Delete DictHandle,'%FIELDS%' Else Null

Delete DictHandle,'%PROTECT.SPEC%' Else Null

 

APPENDIX 2

Network Product Support Matrix

For Advanced Revelation 2.03 and above

In the event that there is more than one option, an asterisk (*) is used to denote the option that offers the optimal configuration and is recommended by Revelation Software.

Network Client Revelation Network Product UsedRequired Revelation Network Driver
Novell 3.x or 4.x Windows 3.x NPP; NLM 1.5*
Novell 3.x or 4.x Windows 3.x NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows 95 MS Client NPP; NLM 1.5*
Novell 3.x or 4.x Windows 95 MS Client NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows 95 Client 32 NPP; NLM 1.5*
Novell 3.x or 4.x Windows 95 Client 32 NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows 98 MS Client NPP; NLM 1.5*
Novell 3.x or 4.x Windows 98 MS Client NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows 98 Client 32 NPP; NLM 1.5*
Novell 3.x or 4.x Windows 98 Client 32 NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows NT 3.51 MS ClientNPP
Novell 3.x or 4.x Windows NT 3.51 MS ClientNLM 1.5 not supported
Novell 3.x or 4.x Windows NT 3.51 Client 32NPP; NLM 1.5*
Novell 3.x or 4.x Windows NT 3.51 Client 32NLM 1.5 IPX/Netware driver 1.5
Novell 3.x or 4.x Windows NT 4.0 MS Client NPP
Novell 3.x or 4.x Windows NT 4.0 MS Client NLM 1.5 not supported
Novell 3.x or 4.x Windows NT 4.0 Client 32 NPP; NLM*
Novell 3.x or 4.x Windows NT 4.0 Client 32 NLM 1.5 IPX/Netware driver 1.5
Novell 5.0 Windows 3.x NPP; NLM 5.0*
Novell 5.0 Windows 3.x NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows 95 MS Client NPP; NLM 5.0*
Novell 5.0 Windows 95 MS Client NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows 95 Client 32 NPP; NLM 5.0*
Novell 5.0 Windows 95 Client 32 NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows 98 MS Client NPP; NLM 5.0*
Novell 5.0 Windows 98 MS Client NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows 98 Client 32 NPP; NLM 5.0*
Novell 5.0 Windows 98 Client 32 NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows NT 3.51 MS ClientNPP
Novell 5.0 Windows NT 3.51 MS ClientNLM 5.0 not supported
Novell 5.0 Windows NT 3.51 Client 32NPP; NLM 5.0*
Novell 5.0 Windows NT 3.51 Client 32NLM 5.0 IPX/Netware driver 1.5
Novell 5.0 Windows NT 4.0 MS Client NPP
Novell 5.0 Windows NT 4.0 MS Client NLM 5.0 not supported
Novell 5.0 Windows NT 4.0 Client 32 NPP; NLM*
Novell 5.0 Windows NT 4.0 Client 32 NLM 5.0 IPX/Netware driver 1.5
NT Server Windows 3.x NPP; NT Service 1.5*
NT Server Windows 3.x NT Service 1.5 all networks driver
NT Server Windows 95 MS Client NPP; NT Service 1.5*
NT Server Windows 95 MS Client NT Service 1.5 all networks driver
NT Server Windows 95 Client 32 NPP
NT Server Windows 95 Client 32 NT Service 1.5 not supported
NT Server Windows 98 MS Client NPP; NT Service 1.5*
NT Server Windows 98 MS Client NT Service 1.5 all networks driver
NT Server Windows 98 Client 32 NPP
NT Server Windows 98 Client 32 NT Service 1.5 not supported
NT Server Windows NT 3.51 MS ClientNPP; NT Service 1.5*
NT Server Windows NT 3.51 MS ClientNT Service 1.5 all networks driver
NT Server Windows NT 3.51 Client 32NPP
NT Server Windows NT 3.51 Client 32NT Service 1.5 not supported
NT Server Windows NT 4.0 MS Client NPP; NT Service 1.5*
NT Server Windows NT 4.0 MS Client NT Service 1.5 all networks driver
NT Server Windows NT 4.0 Client 32 NPP
NT Server Windows NT 4.0 Client 32 NT Service 1.5 not supported
Byte Range NetworksWindows 3.x NPP
Byte Range NetworksWindows 95 MS Client NPP
Byte Range NetworksWindows 95 Client 32 NPP
Byte Range NetworksWindows 98 MS Client NPP
Byte Range NetworksWindows 98 Client 32 NPP
Byte Range NetworksWindows NT 3.51 Client 32NPP
Byte Range NetworksWindows NT 4.0 MS Client NPP
Byte Range NetworksWindows NT 4.0 Client 32 NPP

 

 

APPENDIX 3

Upgrading to Advanced Revelation 3.1x

There are two ways to get to Advanced Revelation 3.1x - upgrade and trade-up. An upgrade will convert your existing system and update your aplications. A trade-up instals a new copy of Advanced Revelation 3.1 on your system   the end result is two copies of Advanced Revelation on your system: your original which remains unchanged, and a brand new version 3.1 with your old serial number and with the same number of network users as your original copy. This gives you control over how your system is changed to allow it to utilize the feature available in 3.1.

 

Current Advanced Revelation VersionUpgrade Options Trade-Up Options
3.0 3.01 to 3.12 upgrade n/a
2.1 2.1 to 3.12 upgrade n/a
2.0 2.0 to 2.12 upgrade

2.1 to 3.12 upgrade
1.x/2.0 to 3.12 trade-up
1.x n/a 1.x/2.0 to 3.12 trade-up

 

APPENDIX 4

Attaching Advanced Revelation Tables to OpenInsight

Tables can be attached to more than one database. You may have a need to attach an existing (Advanced Revelation) table to the current (OpenInsight) database application environment. You may also need to attach an existing (Advanced Revelation) table to OpenInsight for use as an application server. The following steps describe the procedure:

1.     Launch OpenInsight for Workgroups.

2.     From the main Application Manager window, select Database Manager from the Tools menu.

3.     Select Add from the Database Manager File menu.

4.     Select the appropriate drive and directory location for the table(s) you wish to add. A list of tables is displayed in the Tables list box.

5.     Select each table you wish to add and click the add button. To add all of the listed tables, click the all button. The selected tables are displayed in the Add Tables list box.

6.     To preview a table s schema, click either the data or schema button.

7.     Click the ok button to clise the add tables dialog box.

Note: changes to the database definition are not implemented until you save the database definition.

 

There may be situations when you want to change the table name. If you rename the table for the current application, however, you may create problems for the Advanced Revelation applications that use the table. In this situation, you can create alias pointers in OpenInsight. The alias you specify points to a specific table residing in a specific location. In the context of your OpenInsight application or service, the table is identified with the name you specify as the alias, but the actual name of the table in the system does not change, so other applications that use the table are not affected. The following steps describe the procedure required to create table alias pointers:

1.     Launch OpenInsight for Workgroups.

2.     From the main Application Manager window, select Database Manager from the Tools menu.

3.     Select Add from the Database Manager File menu.

4.     Select the appropriate drive and directory location for the table(s) you want to create an alias for. A list of tables is displayed in the Tables list box.

5.     Select the table(s) you wish to alias, and click the alias button to display the Alias Table dialog box.

6.     Enter the alias for the table in the New Name text box and click the ok button. OpenInsight either closes the dialog box, or proceeds to the next selected table.

7.     Repeat the alias definition for each of the selected tables. When you are finished, click the ok button. You aliases display in the Add Tables list in the Add Tables dialog box.

8.     Click the ok button to close the Add Tables dialog box.

Note: changes to the database definition are not implemented until you save the database definition.

 

APPENDIX 5

Setting Up Openinsight as a Web Server Extension

A web server extension enables a browser to communicate with an executing program. A CGI gateway program accepts OpenInsight requests from the web server. To provide this functionality you must:

1.     Copy the executable file OICGI from your OpenInsight for Workgroups directory to a directory on your web server where it can be executed as a CGI module. (Refer to your web server documentation for specifics.) Typically this is the subdirectory \CGI-BIN. Note: some web servers require that the OICGI file be renamed OICGI.EXE.

2.     Install your development copy of OpenInsight for Workgroups.  Unlike other web server extensions, OpenInsight can be installed on the web server or on a network drive.  If OpenInsight is on a network drive, it can simultaneously be used as a web server extension and a development system.

3.     Start OpenInsight from the web server. If, in the previous step, you chose to install OpenInsight on a network drive, you will need to map to the appropriate drive in order to launch OpenInsight.

4.     Start the Internet Gateway Services (a gateway traffic monitoring service) on this copy of OpenInsight by executing the OpenInsight window executable INET_GATEWAY from the repository outline. To automate this step, you can set INET_GATEWAY as an entry window. (If this copy of OpenInsight is on a network and is accessed by other users, be sure you install a Collaborative Development disk for each user. When determining your user count, don t forget to include the web server as one user.)

OpenInsight is now ready to serve as a web server extension.

 

APPENDIX 6

OpenInsight Form Controls and HTML

Because of the nature of HTML and the web environment, there are a few things to bear in mind when creating your web page with the OpenInsight Form Designer. The first is that the Form Designer does not offer a true WYSIWYG HTML design interface. In fact, this is true of virtually all web page creation tools. For example, when you place a control in the center of a form, that control will be centered when you run the form. However, when you convert the form to HTML, that control will be flush left when viewed through a browser. This is simply the way HTML works   there is no x,y coordinate positioning in HTML.  The second thing to keep in mind is that not all of a control s functionality is available via the web. Following is a starter list of the controls that can be used on a web page, and some of their limitations.

        Static Text   HTML ignores any size, font, and color formatting applied to the text and uses the browser s default

        Button

        Bitmap   the file must be a .GIF or a .JPG

        Checkbox   all checkboxes are 2-state, even if 3-state is selected

        Edit Line

        List Box   hierarchical list boxes do not work; if this option is selected, the "code" in the text portion of your list box (indicating bitmaps and levels) will be printed as text.

        Edit Box

        Combo Box

        Radio Button

Another thing you might want to include on your form is a hyperlink to another web page. In order to create a hyperlink, you use the static text control, and append a pipe symbol ( | ) followed by the URL of the desired link to the text property. For example, if you wanted to create a link to Revelation s web site, you would place the following into the Text property of the control: 

go to our web site|http://www.revelation.com

Alternatively, you could create a link that enables a user to email Revelation s general information mailbox. In that case, you would place the following into the Text property:

click here to email|mailto:info@revelation.com

The phrases "go to our web site" and "click here to email" are automatically underlined when they are converted into hyperlinks.

 

APPENDIX 7

The SUBMIT Event

HTML pages do not respond to events in the way that OpenInsight forms and controls do. We can, however, simulate events and event-handler behavior to add dynamic functionality to the HTML page. Internet-specific functionality is added to the OpenInsight form before it is converted to an HTML document. In OpenInsight we refer to this document as an OI Page. The SUBMIT event and its event handler (QuickEvent or custom Internet procedure) provide the mechanism for converting OpenInsight functionality into HTML code and for communicating with OICGI.

 

The SUBMIT event could be used with the following controls:

        Static Text   is converted to a hyperlink that specifies the required OICGI call .

        Button   enables you to dynamically publish a report or access a static web page.

        Window    works in conjunction with the button controls.

 

The QuickEvent Options for the SUBMIT event for the above controls are:

        Publish Report   creates a dynamic HTML page using a report layout defined with Report Builder. (Report Builder, a wrapper for RLIST, can be run by shift double-clicking on the OpenInsight form executable ORMAIN.) The parameter REPORT_ID is the name of the report layout created in Report Builder and is defined in the window s SUBMIT event.

        Read the Document   performs a similar function as the hyperlink (display an HTML page) except that it uses OICGI (it will pass through the OpenInsight Internet Gateway) to access the static web page. The parameter DOC_ID is the name of the HTML document to be accessed and is defined in the window s SUBMIT event. If you want to access an HTML document that was not created with OpenInsight, simply add it to the repository.

 

APPENDIX 8

Internet QuickEvents

OICGI is a CGI (Common Gateway Interface) a 32-bit Windows executable that enables communication between a browser and OpenInsight. In order implement the functionality of the Internet QuickEvent Options or custom procedures, the OI Page itself must be accessed via OICGI. (If you don t access the OI Page via OICGI, you would have to manually edit the HTML form to specify the path to OICGI.) The form should be accessed via a URL that looks something like this:

http://websitename/cgi-bin/oicgi.exe/INET_REPOS?DOC_ID=FORMNAME

 

Here is a simple example of how to use the Internet QuickEvents that to dynamically access a report or access a static web page:

1.     Create a report with Report Builder called EX_REPORT.

2.     Create a form in Form Designer, called EX_FORM with two button controls. Label one  Report  and the other  Other Doc. 

3.     In the SUBMIT event for the button labeled  Report , choose the  Publish Report  QuickEvent Option.

4.     In the SUBMIT event for the button labeled  Other Doc,  choose the  Read the Document  QuickEvent Option.

5.     In the SUBMIT event for the form, choose the QuickEvent Option  Publish Report  and in the Parameters group, fill in:   REPORT_ID=EX_REPORT, DOC_ID=EX_FORM 

6.     Save the form and use the HTML Publisher to convert it to an OI Page called EX_HTML.htm.

7.     To launch the HTML page, go to the URL:

http://websitename/cgi-bin/oicgi.exe/INET_REPOS?DOC_ID=EX_FORM

 

APPENDIX 9

Custom Internet Procedures

The current version of OpenInsight for Workgroups delivers several pre-defined Internet procedures (i.e. INET_REPOS, INET_RLIST, INET_TRACE). Future releases will include new Internet procedures. OpenInsight also gives you the flexibility to write your own. For example, you can create a procedure that reads a specified number of rows in a table and displays them in a browser.

 

The first step in creating a custom Internet procedure is understanding the requirements. A BASIC+ stored procedure is an Internet procedure when all of the following are true:

        The name of the stored procedure begins with INET_.

        The only required parameter of the stored procedure (which must be first) is an HTTP-Request. The user does not pass anything into this parameter explicitly, but other Internet procedures use this parameter to pass things between each other.

        The stored procedure is declared as a function and has as its return value HTML code. (If you looked at the variable returned, it would look like the source code of an HTML page.)

        Other parameters are passed as the QUERY_STRING$ field of an HTTP-Request and have to be parsed using the Inet_QueryParam function.

 

The following example uses a custom Internet procedure that opens up the system table SYSREPOSTYPES, reads the first 15 records, and outputs them to the browser. While this may be a simple example, it is designed to show how the process works.

1.     Go to the System Editor. Type the code included in Appendix 10. (Or go to the Knowledge Base on our web site to cut and paste the code.) Then hit F9 to compile. Save as  INET_READEXAMPLE. 

2.     In Form Designer, open the EX_FORM form from the example in Step Four.

3.     Add a new button control labeled  Ad Hoc Report.  In the SUBMIT event for this button, choose the QuickEvent Option  Execute a Procedure. 

4.     In the Send Message To combobox, select the Procedure INET_READEXAMPLE. The Message combobox should contain EXECUTE, and delete any information in the Parameters combobox.

5.     Save the form and use the HTML Publisher to convert the modified form into HTML. From your browser, access the OI Page with a URL that should look something like this:

http://websitename/cgi-bin/oicgi.exe/INET_REPOS?DOC_ID=EX_FORM

There will be a new button on the page labeled Ad Hoc. When this button is clicked, the custom Internet procedure will be processed, and the first 15 records of the SYSREPOSTYPES table will be dynamically published to the browser.

 

 

APPENDIX 10

Sample Code for a Custom Internet Procedure

This is code for the example in Appendix 9.

 

function Inet_ReadExample(request)

declare function Inet_Msg

       

EOF                                =  0

count              =  0         

/* CGI requires a header that tells the web server what type of document this request will be returning to the browser. In this case, the document will be text. In addition, this header must be followed by a carriage return or a line feed, or both. The next line provides this information. */

 

varhtml           =  'Content-type: text/plain':\0A0A\

varhtml←1> =  'A Partial Listing of the Table SYSREPOSTYPES'

varhtml←1>    =  '(the first 15 entries)':@FM:@FM     

       

        * Open the table, read the row, and format the varhtml variable

 

open 'SYSREPOSTYPES' to hCur else

        return Inet_Msg(request, 'An error occurred while trying to open.')

end

select hCur

        loop

                        readnext KeyVal then

                                        count += 1

                                        read Row from hCur, KeyVal then

                                                        html←1> = KeyVal:"  ": Row<1>:@FM: "    ":Row<2>

                                        end

                                        if count = 15 then

                                                        EOF = 1

                                        end

                        end else

                                        EOF = 1

                        end

        until EOF

        repeat

 

/* Change the @FM characters to a linefeed/carriage return. This formats the output data.  Note that the beginning of the varhtml variable contains the Content-type info.  This must be there for this line implement the linefeed */

 

convert @FM to \0A\ in varhtml

 

return varhtml

  • kb/kb_articles/kb0158.txt
  • Last modified: 2024/01/30 13:36
  • by 127.0.0.1