Just to be clear, you want to pass a value to a function, and have up to five arrays be updated based on that value - right?
And if so, the values in each of the arrays will differ from one another?

Using a structure to hold all of your arrays (as already suggested by laserlight) would be one solution:

Code:
struct data_t
{
    int data_1[3];
    int data_2[3];
    int data_3[3];
    /* etc */
};

struct data_t function(int action)
{
    struct data_t data;

    /* use "action" in your calculations */

    data.data_1[0] = /* */;    
    data.data_1[1] = /* */;
    data.data_1[2] = /* */;

    /* repeat for "data.data_2", "data.data_3", etc */

    return data;
}
To make things more efficient, you could pass a pointer to a struct and update that rather than return a struct from the function:

Code:
void function(int action, struct data_t *data)
That is one possible solution. There are others, as well.

Also, if you tell us what you want to accomplish, rather than how you want to accomplish it, we might be able to suggest better alternatives.