From: John Vottero [John@MVPSI.com] Sent: Sunday, June 06, 1999 2:25 PM To: Info-VAX@Mvb.Saic.Com Subject: RE: Passing an array of character strings in C on VMS? It sounds like you are trying to call smg$create_menu. Here are some C code fragments which do that: /* ** Menu array descriptor: */ struct menu_descriptor { unsigned short dsc$w_maxstrlen; /* maximum length of the BODY field of an array element in bytes */ unsigned char dsc$b_dtype; /* data type code = DSC$K_DTYPE_VT */ unsigned char dsc$b_class; /* descriptor class code = DSC$K_CLASS_VSA */ char *dsc$a_pointer; /* address of first actual byte of data storage */ char dsc$b_scale; /* reserved for future standardization, must be zero */ unsigned char dsc$b_digits; /* reserved for future standardization, must be zero */ unsigned char dsc$b_aflags; /* Flags all zero */ unsigned char dsc$b_dimct; /* number of dimensions */ unsigned long dsc$l_arsize; /* total size of array in bytes */ char *dsc$a_a0; /* Address of element [0] */ unsigned long dsc$l_s; /* Strides */ long dsc$l_lower; /* Lower bound */ long dsc$l_upper; /* Upper bound */ }; ... struct menu_descriptor menu_dsc; menu_dsc.dsc$w_maxstrlen = the_menu->max_size; menu_dsc.dsc$b_dtype = DSC$K_DTYPE_T; menu_dsc.dsc$b_class = DSC$K_CLASS_A; menu_dsc.dsc$a_pointer = the_menu->textptr; menu_dsc.dsc$b_scale = 0; menu_dsc.dsc$b_digits = 0; menu_dsc.dsc$b_aflags = 0xC0; menu_dsc.dsc$b_dimct = 1; menu_dsc.dsc$l_arsize = the_menu->num_item * the_menu->max_size; menu_dsc.dsc$a_a0 = the_menu->textptr; menu_dsc.dsc$l_s = 0; menu_dsc.dsc$l_lower = 0; menu_dsc.dsc$l_upper = the_menu->num_item - 1; smg$create_menu(&the_menu->menu_id, &menu_dsc, &menu_type, &menu_flags, &(int)1, /* First row */ &menu_set, &menu_complmnt); > -----Original Message----- > From: Robert Young [mailto:rcyoung@groupz.net] > Sent: Saturday, June 05, 1999 8:47 AM > To: Info-VAX@Mvb.Saic.Com > Subject: Passing an array of character strings in C on VMS? > > > Does anyone have an example of how to pass an array of > character strings > > by descriptor in C to a function? >