*****Listing 1*****

#include<stdio.h>

extern alloc_memory(), open_files(), init_screen(), init_printer(),
       init_vars(), init_commport();

char * memblock;
#define BLOCK_SIZE              4096
#define MEM_ALLOCATION_ERROR    2001

int (*init_funcs[])() = {
    alloc_memory,       /* Each of these initialization functions */
    open_files,         /* returns a value of 0 if it executed OK. */
    init_screen,        /* If an error occurred ,it returns an error */
    init_printer,       /* code that is unique to itself, such as */
    init_vars,          /* MEM_ALLOCATION_ERROR. The error is */
    init_commport,      /* handled by the routine that called */
    NULL                /* initialize() */
    };

    initialize()
    {
        int i,errstat;
        for(i = 0 ; init_funcs[i] != NULL ; ++i){
            if(errstat = (*init_funcs[i])()){
                return(errstat);
            }
        }
        return(0);
    }

    alloc_memory()
    {
        char * malloc();
        if(!(memblock = (char *)malloc(BLOCK_SIZE))){
            return(MEM_ALLOCATION_ERROR);
        }
        return(0);
    }

/* The rest of the initialization functions are setup like alloc_memory() */
