#include #include #include #include "pcbdef.h" #include #include #include #include int uic_bin = 0; #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 getsta (void) { int status; PCB *pcb; char buf[ 255 ]; struct dsc$descriptor buf_dsc; $DESCRIPTOR(fao_dsc,"Change UIC from !%U(!OL) to !%I(!OL)!/"); #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,pcb->pcb$l_uic,uic_bin,uic_bin))) ) return status; if ( !(1 & (status = lib$put_output(&buf_dsc))) ) return status; pcb->pcb$l_uic = uic_bin; return status; } int main (int argc, char ** argv[]) { int status; struct dsc$descriptor uic_name_dsc; char buf[ 255 ]; struct dsc$descriptor buf_dsc; $DESCRIPTOR(usage_dsc,"Usage:setuic \n\r\tsetuic sysman\n\r"); $DESCRIPTOR(fao_dsc,"UIC is translated from '!AS' to !%U(!OL)!/"); if ( argc < 2 ) { lib$put_output(&usage_dsc); return SS$_INSFARG; } INIT_SDESC(uic_name_dsc,strlen(argv[1]),argv[1]); if ( !(1 & (status = sys$asctoid(&uic_name_dsc,&uic_bin,0))) ) return status; INIT_SDESC(buf_dsc,sizeof(buf),buf); if ( !(1 & (status = sys$fao(&fao_dsc,&buf_dsc.dsc$w_length,&buf_dsc,&uic_name_dsc, uic_bin,uic_bin))) ) return status; if ( !(1 & (status = lib$put_output(&buf_dsc))) ) return status; if ( !(1 & (status = sys$cmkrnl(setuic,0))) ) return status; }