Example 1: Multiple GLOBALS file

Important:

Defining global symbols (variables, constants, types) is deprecated and should be avoided. Instead of GLOBALS, use PUBLIC symbols in modules to be imported with IMPORT FGL.

Module "labels.4gl": This module defines the text that is displayed on the screen
GLOBALS
  CONSTANT g_lbl_val = "Index:"
  CONSTANT g_lbl_idx = "Value:"
END GLOBALS
Module "globals.4gl": Declares a global array and a constant containing its size
GLOBALS "labels.4gl" -- this statement could be line 2 of main.4gl

GLOBALS
  DEFINE g_idx ARRAY[100] OF CHAR(10)
  CONSTANT g_idxsize = 100
END GLOBALS
Module "database.4gl": This module is dedicated to database access
GLOBALS "globals.4gl"

FUNCTION get_id()
  DEFINE li INTEGER
  FOR li = 1 TO g_idxsize -- this could be a FOREACH statement 
      LET g_idx[li] = g_idxsize - li 
  END FOR
END FUNCTION
Module "main.4gl": Fill in the global array and display the result
GLOBALS "globals.4gl"

MAIN
  DISPLAY "Initializing constant values for this application..."
  DISPLAY "Filling the data from function get_idx in module database.4gl..."
  CALL get_id()
  DISPLAY "Retrieving a few values from g_idx"
  CALL display_data()
END MAIN

FUNCTION display_data()
  DEFINE li INTEGER
  LET li = 1
  WHILE li <= 10 AND li <= g_idxsize 
      DISPLAY g_lbl_idx CLIPPED || li || " " || g_lbl_val CLIPPED || g_idx[li]
      LET li = li + 1
  END WHILE
END FUNCTION