#include <stdio.h>#include <string.h>#include <unistd.h>#include <descrip.h>#include <dvidef.h>#include <jpidef.h>#include <lib$routines.h>#include <ssdef.h>#include <stsdef.h>#include <starlet.h>#include <syidef.h>/* GETDVI item descriptor structure. */typedef struct{    short buf_len;    short itm_cod;    void *buf;    int *ret_len;} xxx_item_t;int main( int argc, char **argv){    int sts = 0;    char vol_nam[ 65];    short iosb[ 4];/* GETDVI item descriptor set. */    int vol_nam_len_ret;    struct    {    xxx_item_t vol_nam_itm;    int term;    } dvi_itm_lst =     { { ((sizeof vol_nam)- 1), DVI$_VOLNAM, &vol_nam, &vol_nam_len_ret },       0     };    if (argc > 1)    {printf( " a1: >%s<, len = %d.\n", argv[ 1], strlen( argv[ 1]));        /* Device name descriptor. */        struct dsc$descriptor_s dev_name_descr =         { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL };        dev_name_descr.dsc$w_length = strlen( argv[ 1]);        dev_name_descr.dsc$a_pointer = argv[ 1];					        sts = sys$getdvi( 0,                    /* Event flag. */                          0,                    /* Channel. */                          &dev_name_descr,      /* Device name. */                          &dvi_itm_lst,         /* Item list. */                          &iosb,                /* IOSB. */                          0,                    /* AST address. */                          0,                    /* AST parameter. */                          0,                    /* Null argument. */                          0);                   /* Pathname. */fprintf( stderr, " $GETDVI sts =  %08x , iosb[0] = %08x .\n", sts, iosb[0]);        if ((sts& STS$M_SEVERITY) == STS$K_SUCCESS)        {            printf( " vol_nam_len_ret = %d.\n", vol_nam_len_ret);            vol_nam[ vol_nam_len_ret] = '\0';            printf( "     label: >%s<.\n", vol_nam);        }        if ((sts& STS$M_SEVERITY) == STS$K_SUCCESS)        {            vol_nam[ vol_nam_len_ret- 1] = 'X';            printf( " New label: >%s<.\n", vol_nam);#if 0            dvi_itm_lst.vol_nam_itm.buf_len = vol_nam_len_ret;#endif /* 0 */            sts = sys$set_devicew(             0,                         /* Event flag. */             0,                         /* Channel. */             &dev_name_descr,           /* Device name. */             &dvi_itm_lst,              /* Item list. */             &iosb,                     /* IOSB. */             0,                         /* AST address. */             0,                         /* AST parameter. */             0);                        /* Null argument. */fprintf( stderr, " $SET_DEVICE sts =  %08x , iosb[0] = %08x .\n", sts, iosb[0]);        }    }    return sts;}