From a data file

You can get the report data from a data file - one created by the BDL UNLOAD statement, for example.

This example uses the OrderReport.unl file in the GRW demo Reports.

The only change to the MAIN program block would be the call to the runReportFromFile function in line 26.
MAIN

   DEFINE handler om.SaxDocumentHandler -- report handler

     --call the mandatory functions that configure the report  
   IF fgl_report_loadCurrentSettings("myreport.4rp") THEN -- if  the 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
     -- function runReportFromFile
   IF handler IS NOT NULL THEN  
     CALL runReportFromFile(handler)
   END IF

END MAIN

The function runReportFromFile replaces the runReportFromDatabase function as the Report Driver. It uses the unload file OrderReport.unl to provide the data for the report.

 FUNCTION runReportFromFile(handler)
   DEFINE
        orderline OrderType,
        handler om.SaxDocumentHandler,
        ch base.channel,    -- definition of channel object
        dataFile String       -- file containing report data

   LET dataFile = "./OrderReport.unl"
   LET ch = base.Channel.create()
   CALL ch.openFile(dataFile,"r") 

   START REPORT report_all_orders TO XML HANDLER handler 
   WHILE ch.read([orderline.*])
      OUTPUT TO REPORT report_all_orders(orderline.*)
   END WHILE
   FINISH REPORT report_all_orders

   CALL ch.close()
 END FUNCTION