//--------------------------------------------------------------------- // example of importing a complicated structure with initial conditions //--------------------------------------------------------------------- Main Module IMPORTSTR use TEXTIO Use EXPORTSTR // Must use a USE statement /// import Level_1, Level_2, Level_3, Array_of_Level_1 from EXPORTSTR declare Dynamic_Level_3 : Level_3 Static_Level_3 :static Level_3 Static_Level_1 :static Level_1 Dynamic_Level_1 : Level_1 // Praxis does not put initial conditions into these arrays Array_Dynamic_Level_3 : array [1..1] of Level_3 Array_Static_Level_3 :static array [1..1] of Level_3 Array_Static_Level_1 :static array [1..1] of Level_1 Array_Dynamic_Level_1 : array [1..1] of Level_1 // get arround Praxis bug which does not initialize arrays of // structures by declaring a local copy of the structure // and making arrays of the local copy. My_Level_3 is Level_3 MY_Level_1 is Level_1 MY_Array_Dynamic_Level_3: array [1..1] of MY_Level_3 My_Array_Static_Level_3 :static array [1..1] of MY_Level_3 MY_Array_Static_Level_1 :static array [1..1] of MY_Level_1 MY_Array_Dynamic_Level_1: array [1..1] of MY_Level_1 Dyn_Import_Array_of_Level_1: Array_of_Level_1 Stat_Import_Array_of_Level_1:static Array_of_Level_1 My_Array_of_Level_1 is Array_of_Level_1 MY_Dyn_Import_Array_of_Level_1 : MY_Array_of_Level_1 MY_Stat_Import_Array_of_Level_1:static MY_Array_of_Level_1 enddeclare out_line (TTY, "-------------------------------") procedure Print_Level_3 param This_Level_3 : in ref Level_3 Name : in ref packed array [1..?n] of char endparam out_string (TTY, Name) out_record (TTY) out_string (TTY, "This_Level_3. TTT = ") out_integer (TTY, This_level_3 . TTT) out_record (TTY) endprocedure procedure Print_Level_1 param This_Level_1 : in ref Level_1 Name : in ref packed array [1..?n] of char endparam out_string (TTY, Name) out_record (TTY) out_string (TTY, "This_Level_1. stg = ") out_string (TTY, This_level_1 . stg) out_record (TTY) out_string (TTY, " . B_2 . A_1 = ") out_integer (TTY, This_Level_1 . B_2 . A_1) out_record (TTY) out_string (TTY, " . B_2 . A_2 = ") out_integer (TTY, This_Level_1 . B_2 . A_2) out_record (TTY) out_string (TTY, " . B_2 . A_3 = ") out_integer (TTY, This_Level_1 . B_2 . A_3) out_record (TTY) out_string (TTY, " . C_2 = ") out_integer (TTY, This_level_1 . C_2) out_record (TTY) endprocedure out_line (TTY, "Contents of actual imported structures:") Print_Level_1 (Static_Level_1, "static") Print_Level_1 (Dynamic_Level_1, "dynamic") Print_Level_3 (Static_Level_3, "static") Print_Level_3 (Dynamic_Level_3, "dynamic") out_line (TTY, "Contents of Array of actual imported structures:") Print_Level_1 (Array_Static_Level_1 [1], "static array") Print_Level_1 (Array_Dynamic_Level_1[1], "dynamic array") Print_Level_3 (Array_Static_Level_3 [1], "static array") Print_Level_3 (Array_Dynamic_Level_3 [1], "dynamic array") out_line (TTY, "Contents of Array of Local invokation of imported structures:") Print_Level_1 (MY_Array_Static_Level_1 [1], "My static array") Print_Level_1 (MY_Array_Dynamic_Level_1[1], "MY dynamic array") Print_Level_3 (MY_Array_Static_Level_3 [1], "MY static array") Print_Level_3 (MY_Array_Dynamic_Level_3 [1], "MY dynamic array") out_line (TTY, "Contents of Imported Array of structures:") Print_Level_1 (Dyn_Import_Array_of_Level_1 [1], "Dynamic Imported Array:") Print_Level_1 (Stat_Import_Array_of_Level_1[1], "Static Imported Array:") out_line (TTY, "Contents of Local invokation of Imported Array of structures:") Print_Level_1 (MY_Dyn_Import_Array_of_Level_1 [1], "Dynamic Imported Array:") Print_Level_1 (MY_Stat_Import_Array_of_Level_1[1], "Static Imported Array:") EndModule