#include #include #include #include #include #include #include #include #include #include #include #include char fname [] = {"zz.txt"}; $DESCRIPTOR(dname,"SYS$DISK"); typedef struct _fibdesc { int fiblen; struct fibdef *fibptr;} fibdesc; struct fibdef fib; fibdesc fibd = {FIB$K_LENGTH,&fib}; int curdate [2]; struct atrdef atr [3] = {{ATR$S_EXPDATE,ATR$C_EXPDATE,&curdate}, {ATR$S_CREDATE,ATR$C_CREDATE,&curdate}}; void main (void) { int status; struct FAB fab; struct RAB rab; struct NAM nam; short chan; iosb acpiosb; if ( !(1 & (status = sys$gettim(&curdate))) ) lib$signal(status); /* ** Get FID by open/close file */ fab = cc$rms_fab; fab.fab$b_fac = FAB$M_UPD | FAB$M_GET | FAB$M_PUT; fab.fab$l_fna = fname; fab.fab$b_fns = sizeof(fname) - 1; fab.fab$l_nam = &nam; nam = cc$rms_nam; if ( !(1 & (status = sys$open(&fab))) ) lib$signal(status); fib.fib$w_fid_num = nam.nam$w_fid_num; fib.fib$w_fid_seq = nam.nam$w_fid_seq; fib.fib$w_fid_rvn = nam.nam$w_fid_rvn; if ( !(1 & (status = sys$close(&fab))) ) lib$signal(status); /* **Assign I/O channel to the disk device */ if ( !(1 & (status = sys$assign(&dname,&chan,0,0,0))) ) lib$signal(status); /* ** Access to the file */ fib.fib$l_acctl = FIB$M_NOWRITE|FIB$M_WRITE; if ( !(1 & (status = sys$qiow(0,chan,IO$_ACCESS|IO$M_ACCESS, &acpiosb,0,0,&fibd,0,0,0,0,0))) ) lib$signal(status); if ( !(acpiosb.iosb$w_status & 1) ) lib$signal(acpiosb.iosb$w_status); /* ** Deacces the file, write new attributes */ fib.fib$l_acl_status |= ATR$C_CREDATE; if ( !(1 & (status = sys$qiow(0,chan,IO$_DEACCESS, &acpiosb,0,0,&fibd,0,0,0,&atr,0))) ) lib$signal(status); if ( !(acpiosb.iosb$w_status & 1) ) lib$signal(acpiosb.iosb$w_status); /* ** */ if ( !(1 & (status = sys$dassgn(chan))) ) lib$signal(status); }