[Info-vax] Can C #includes like this be made to work onVMS?
Craig A. Berry
craigberry at nospam.mac.com
Wed Oct 16 21:34:49 EDT 2024
On 10/16/24 5:44 PM, Arne Vajhøj wrote:
> On 10/15/2024 7:48 PM, Arne Vajhøj wrote:
>> $ type bc.eve
>> all replace "#include ""b/" "#include ""c/"
>> exit
>
>> $ type cd.tpu
>> eve_all_replace("#include ""c/", "#include ""d/");
>> eve_exit();
>
> Just realized that one is custom not standard.
>
> !
> ! Replace all occurences of string with another string (without
> ! confirm).
> !
> ! High-level.
> !
> procedure eve_all_replace(fndstr,rplstr)
> local fnd_string,
> rpl_string,
> pos_mark,
> count_integer;
> if not (eve$prompt_string(fndstr,fnd_string,"Old string: ",
> "No old string given")) then
> return;
> endif;
> if not (eve$prompt_string(rplstr,rpl_string,"New string ",
> "No new string given")) then
> return;
> endif;
> pos_mark:=mark(none);
> set (screen_update, off);
> eve$all_replace(fnd_string,rpl_string,count_integer);
> position (pos_mark);
> set (screen_update, on);
> delete (pos_mark);
> message("Total of "+str(count_integer)+" replaces");
> endprocedure;
> !
> ! Replace all occurences of string with another string (without
> ! confirm).
> !
> ! Low-level.
> !
> procedure eve$all_replace(fndstr,rplstr,count)
> local find_mark;
> position (beginning_of(current_buffer));
> count:=0;
> loop
> find_mark:=search_quietly(fndstr, forward);
> exitif find_mark = 0;
> count:=count+1;
> position (find_mark);
> copy_text (rplstr);
> erase_character (length(fndstr));
> endloop;
> endprocedure;
eve_all_replace may be custom, but as far as I know eve_global_replace
is standard. Here's an example of using TPU as a poor man's Perl:
$ edit/tpu/nodisplay/noinitialization -
/section=sys$library:eve$section.tpu$section -
/command=sys$input/output=myfile.txt myfile.txt
input_file := GET_INFO (COMMAND_LINE, "file_name");
main_buffer:= CREATE_BUFFER ("main", input_file);
POSITION (BEGINNING_OF (main_buffer));
eve_global_replace("foo","bar");
out_file := GET_INFO (COMMAND_LINE, "output_file");
WRITE_FILE (main_buffer, out_file);
quit;
^Z
But yeah, Perl is way easier:
$ perl -pi -e "s/foo/bar/g;" myfile.txt
More information about the Info-vax
mailing list