You're supplying "1" as the first argument, then writing:
if(getarg(1)==1){goto L_firstmenu;end;}
That skips your array setup completely, giving you no values to select from.
Your select statement could also be condensed from this:
select(.@a$[1],.@a$[2],.@a$[3],.@a$[4],.@a$[5],.@a$[6],.@a$[7],.@a$[8],
.@a$[9],.@a$[10],.@a$[11],.@a$[12],.@a$[13],.@a$[14],.@a$[15],.@a$[16],
.@a$[17],.@a$[18],.@a$[19],.@a$[20],.@a$[21],.@a$[22],.@a$[23]);
set .@c,@menu;
To this:
set .@menu$,"";
for(set .@i,1; .@i<24; set .@i,.@i+1) set .@menu$, .@menu$+.@a$[.@i]+":";
set .@c, select(.@menu$);