1
2
3
4
5
6
7
8
9
10
11 volume_dump_switch_on: vdsn: proc;
12
13
14
15
16 Note
17
18
19 dcl (dirname, new_path) char (168) aligned;
20 dcl (entname, ename) char (32) aligned;
21 dcl arg char (alng) based (aptr) unaligned;
22 dcl b_name char (32) based;
23 dcl (aptr, eptr, nptr, bentp, npp, dirp, entp) ptr init (null);
24 dcl (i, j, alng, ecount, retc, nargs) fixed bin (17);
25 dcl code fixed bin (35);
26 dcl (incr_volume_dump_sw, comp_volume_dump_sw) fixed bin;
27 dcl myname char (32) aligned;
28
29 dcl cleanup condition;
30
31 dcl (error_table_$incorrect_access,
32 error_table_$no_info) ext fixed bin (35);
33
34 dcl ioa_ entry options(variable);
35 dcl check_path_name_ ext entry (ptr, fixed bin (17), bit (1) aligned, char (32) aligned, ptr, ptr, ptr,
36 fixed bin (17), ptr, ptr, fixed bin (17));
37 dcl check_path_name_$indiv ext entry (ptr, ptr, bit (1) aligned);
38 dcl cu_$arg_count entry(fixed bin);
39 dcl cu_$arg_ptr ext entry (fixed bin (17), ptr, fixed bin (17), fixed bin (35));
40 dcl com_err_ ext entry options (variable);
41 dcl hcs_$set_volume_dump_switches entry (char (*) aligned, char (*) aligned, fixed bin, fixed bin, fixed bin (35));
42
43 dcl (null, addr) builtin;
44
45 incr_volume_dump_sw = -1;
46 comp_volume_dump_sw = -1;
47 myname = "volume_dump_switch_on";
48 goto start;
49
50 volume_dump_switch_off: vdsf: entry;
51 incr_volume_dump_sw = 1;
52 comp_volume_dump_sw = 1;
53 myname = "volume_dump_switch_off";
54
55 start:
56 call cu_$arg_count(nargs);
57 if nargs < 1 then do;
58 call ioa_("^a: USAGE ^a pathname [-incr] | [-comp]", myname, myname);
59 return;
60 end;
61 npp = addr (new_path);
62 dirp = addr (dirname);
63 entp = addr (entname);
64
65 on cleanup call vds_cleanup;
66
67 do i = 1 to nargs;
68 call cu_$arg_ptr (i, aptr, alng, code);
69 if code ^= 0 then do;
70 call com_err_(code, myname);
71 return;
72 end;
73 if arg = "-incr" | arg = "-incremental" then comp_volume_dump_sw = 0;
74 if arg = "-comp" | arg = "-complete" then incr_volume_dump_sw = 0;
75 end;
76
77 if comp_volume_dump_sw = 0 & incr_volume_dump_sw = 0 then do;
78 call com_err_(0, myname, "Both control arguments may not be used together");
79 return;
80 end;
81
82 do i = 1 by 1;
83 call cu_$arg_ptr (i, aptr, alng, code);
84 if code ^= 0 then return;
85 if arg = "-incr" | arg = "-incremental" then goto skip_loop;
86 if arg = "-comp" | arg = "-complete" then goto skip_loop;
87 check_name:
88 call check_path_name_ (aptr, alng, "0"b, myname, dirp, entp, npp, ecount, eptr, nptr, retc);
89 if retc = 2 then go to free_up;
90 ename = entname;
91
92 do j = 1 to ecount;
93 if retc = 1 then do;
94 call check_path_name_$indiv (dirp, bentp, "0"b);
95 ename = bentp -> b_name;
96 end;
97 call hcs_$set_volume_dump_switches (dirname, ename, incr_volume_dump_sw, comp_volume_dump_sw, code);
98 if code ^= 0 then do;
99 call com_err_ (code, myname, new_path);
100
101 if (code = error_table_$incorrect_access) | (code = error_table_$no_info) then
102 go to free_up;
103 end;
104 end;
105 free_up:
106 call vds_cleanup;
107 skip_loop:
108 end;
109
110 return;
111
112 vds_cleanup: proc;
113 if eptr ^= null then free eptr -> b_name;
114 if nptr ^= null then free nptr -> b_name;
115 return;
116 end vds_cleanup;
117
118 end volume_dump_switch_on;