#***************************************************************************
#*                         ArraySeq_mod.awk -  description
#*                            -------------------
#*   begin                : Mon 26 Dec 2005 04:40:14 PM EST
#*   copyright            : (C) 2005 by Terry D. Boldt
#*   email                : fastsnip-wm1@yahoo.com
#***************************************************************************/
#
#***************************************************************************
#*                                                                         *
#*   This program is free software; you can redistribute it and/or modify  *
#*   it under the terms of the GNU General Public License as published by  *
#*   the Free Software Foundation; either version 2 of the License, or     *
#*   (at your option) any later version.                                   *
#*                                                                         *
#***************************************************************************/
#*
#*   QTAwk program to demostrate dynamically loaded user function
#*
#*/
BEGIN {
    cput_module_name = "cpu.time_module.so";
    load_module(cput_module_name);
    clock_start = _CPU_start_time();

    load_module("system.info_module.so");

    display_PROCINFO();
    display_user_functions();
    display_modules();

    ArraySeq_mod_version = "Not Installed";
    print("Array Sequence Module Version:",ArraySeq_mod_version);

    time_mod_version_string = "Not Installed";
    print("Time Module Version:",time_mod_version_string);

    # load desired module specifying initialization function
    # exit function uses default name
    module_name = "./ArraySeq_mod.so";
    load_module(module_name);

    tmodule_name = "./time_mod.so";
    load_module(tmodule_name);

    print("Array Sequence Module Version:",ArraySeq_mod_version);
    print("Time Module Version:",time_mod_version);

    display_PROCINFO();
    display_user_functions();
    display_modules();

    # get time values in returned array
    time = local_time();

    print("Printing Time structure Return values:");
    for ( i in time ) {
        print("time[" >< i >< "] == ">< time[i]);
    } ## endfor

    # now call function to sequence through array elements, printing each element
    sequence_array(time);

    ar3x3[1][1] = 1;
    ar3x3[1][2] = 2;
    ar3x3[1][3] = 3;

    ar3x3[2][1] = 4;
    ar3x3[2][2] = 5;
    ar3x3[2][3] = 6;

    ar3x3[3][1] = 7;
    ar3x3[3][2] = 8;
    ar3x3[3][3] = 9;

    # uncomment next line to get a non-zero value for final times
    #for ( i = 100000 ; i ; i-- )
        sequence_array(ar3x3);

    # unload module - exit function will be executed
    unload_module(module_name);
    unload_module(tmodule_name);

    print("Array Sequence Module Version:",ArraySeq_mod_version);
    print("Time Module Version:",time_mod_version_string);

    display_PROCINFO();
    display_user_functions();
    display_modules();

    print("Elapsed Time:",_CPU_stop_time(clock_start));
    times = _CPU_times(FALSE);
    clock_tics = "clock_tics_per_second";
    for ( i in times ) {
        if ( i == clock_tics ) continue;
        print("times[" >< i >< "] = ",times[i]);
    } ## endfor

    system_info = get_sys_info();
    for ( i in system_info ) {
        print("System Info[" >< i >< "] = " >< system_info[i]);
    } ## endfor
} ## BEGIN

#include "display_funcs.awk"