Using the example code

You can create a report application using the generated BDL file, or the file can be incorporated as part of a larger application. We recommend that you use a different BDL file to contain the additional code that is required, rather than making changes in the generated file. This allows you to re-execute the Report Data Wizard without risking the loss of your changes.

  1. Create the Report Data Definition file
    Create the rdd file that is used to populate the Data View of the Report Design Document, by executing this from the command line:
    fglcomp --build-rdd <generated_file>4gl 

    Add the resulting <sourcefile>.rdd file to your application files.

  2. Design the Report

    Specify the rdd file on the Data View page. When your design is complete, save the report definition file (4rp) as part of your application. See Designing a Report for additional information about the design process.

  3. Add Additional BDL Code to the program
    1. To configure the report, call the mandatory report API functions, which identify the report definition file and create the XML handler for the report:
    2. To connect to the Database, add a CONNECT TO or DATABASE statement to the program.
    3. Call the run_<databasename>_to_handler function (which is in the file generated by the Report Data Wizard) to execute the report.

Example MAIN function

This simple function illustrates step 3:
 MAIN

   DEFINE handler om.SaxDocumentHandler -- report handler

   DATABASE officestore --connect to the database

      --call the mandatory functions that configure the report
   IF fgl_report_loadCurrentSettings("myreport.4rp") THEN -- if file loaded OK
     LET handler = fgl_report_commitCurrentSettings()     -- commit the 
                                                          -- file settings
   ELSE
     EXIT PROGRAM
   END IF

      -- run the report by calling the report driver contained in your 
        -- generated function
   IF handler IS NOT NULL THEN  
     CALL run_officestore_to_handler(handler)   
   END IF

  END MAIN