When declaring an array as a formal parameter for a function, you need to specify the number of columns, but you don't need to specify the number of rows. In a database analogy, you need to specify the record length, but not the number of records.
To make your function1 more general, rather than declaring the rows and columns of the array, declare only the the columns and pass the number of rows as a separate parameter. For example:
void function1(char BarCode[][RECORDLENGTH], int records)
{
//...
}
To take the next step toward generalizing the function, pass three parameters to the function: a pointer to the array, the number of rows, and the number of columns. For example:
void function1(char *pBarCode, int rows, int recordlength)
{
//...
}
Passing an array pointer works with a function panel. See the attached example, which includes function panels and functions for passing arrays and using array subscripts and functions for passing an array pointer and doing some pointer arithmetic to get to the array elements.