#include #include #include #include "pcbdef.h" #include #include #include #include #define INIT_SDESC(dsc, len, ptr) {(dsc).dsc$b_dtype = DSC$K_DTYPE_T;\ (dsc).dsc$b_class = DSC$K_CLASS_S; (dsc).dsc$w_length = (len);\ (dsc).dsc$a_pointer = (ptr);} int setuic (int *uic) { int status,acmode = PSL$C_KERNEL; PCB *pcb; char buf[ 255 ]; struct dsc$descriptor buf_dsc; $DESCRIPTOR(fao_dsc,"!/Change UIC from !%I to !%I!/"); #pragma nostandard globalref ctl$gl_pcb; #pragma standard pcb = (PCB *)ctl$gl_pcb; INIT_SDESC(buf_dsc,sizeof(buf),buf); if ( !(1 & (status = sys$fao(&fao_dsc,&buf_dsc.dsc$w_length,&buf_dsc,pcb->pcb$l_uic,*uic))) ) return status; if ( !(1 & (status = lib$put_output(&buf_dsc))) ) return status; return status; } void main (int argc, char ** argv[]) { int status,uic_bin = 0; struct dsc$descriptor uic_name_dsc; $DESCRIPTOR(usage_dsc,"Usage:setuic \n\r\tsetuic sysman\n\r"); if ( argc < 2 ) { lib$put_output(&usage_dsc); sys$exit(SS$_INSFARG); } INIT_SDESC(uic_name_dsc,strlen(argv[1]),argv[1]); if ( !(1 & (status = sys$asctoid(&uic_name_dsc,&uic_bin,0))) ) sys$exit(status); if ( !(1 & (status = sys$cmkrnl(setuic,&uic_bin))) ) sys$exit(status); }