annotate src/os_vms_fix.com @ 1017:0d31f8a78ab3 v7.0.143

updated for version 7.0-143
author vimboss
date Tue, 17 Oct 2006 16:34:24 +0000
parents 3fc0f57ecb91
children 6e4e0d43b20b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 $! OS_VMS_FIX.COM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 $! Copyright (C) 2000, Stephen P. Wall
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 $! Filter files for "#if" line continuations using a '\' and convert
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 $! them to use comments for the continuation. Necessary for VAXC - it
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 $! doesn't understand the '\'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 $! Yes, this is honkin' ugly code, but I deliberately avoided
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 $! if ...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 $! then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 $! ....
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 $! endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 $! and call/subroutine/endsubroutine constructs, because I can still
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 $! remember when DCL didn't have them, and I wanted this to be as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 $! portable as possible, so... If you want to structure it nicer for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 $! your own use, please feel free to do so. However, please only
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 $! distribute it in it's original form.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 $! I wrote it in DCL for portability and ease of use - a C version
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 $! would definitely run faster, but then I'd have to deal with compiler
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 $! differences, and users would have to deal with configuring and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 $! building it. With DCL, it runs out-of-the-box.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 $! Note that if you use this from a VMS system to modify files on a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 $! mounted network drive, f$search() may return only the first matching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 $! file when it tries to resolve wildcards. I have been unable to find
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 $! a way around this. Either copy the files to a local disk, or specify
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 $! each file individually (Keep in mind if you do this that VMS limits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 $! you to eight parameters, so you'll only be able to filter eight files
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 $! at a time).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 $! Ideas...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 $! - Use 'search filespec "#","if","\"/mat=and' to quickly eliminate
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 $! files that definitely don't need filtering. This should speed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 $! things up considerable. Reading and writing every line from every
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 $! file takes quite a bit of time...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 $! - Error handling isn't great. Come up with something better....
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 $! E-mail addresses:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 $! Steve Wall hitched97@velnet.com
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 $! Zoltan Arpadffy arpadffy@polarhome.com
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 $! John W. Hamill jhamill3@ford.com
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 $! Modification History:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 $! 13Jul00 SWall Initial Version
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 $! 14Jul00 ZArpadffy Display usage
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 $! 06Mar01 JHamill Ctrl-M problem fix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 $! If no parameters, or "-h" for a parameter, print usage and exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 $ all = "''p1'''p2'''p3'''p4'''p5'''p6'''p7'''p8'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 $ if (all .nes. "") .and. (p1 .nes. "-h") .and. (p1 .nes. "-H") then goto startup
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 $ write sys$output "OS_VMS_FIX - DECC->VAXC pre-processor directive convert script"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 $ write sys$output "Usage: @OS_VMS_FIX <filename_1> <filename_2> <...>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 $ write sys$output " @OS_VMS_FIX <filename with wildcard> <...>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 $ write sys$output ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 $ write sys$output "Example: @OS_VMS_FIX *.c *.h [.proto]*.pro"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 $ write sys$output "Please note, you can define up to 8 parameters."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 $ write sys$output ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 $ exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 $! Create an FDL file to convert VFC format files to Stream_LF.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 $! VMS OPEN/WRITE command creates VFC files. When VFC files are read
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 $! out under unix, they appear to have binary data embedded in them.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 $! To be friendly, we'll convert them to Stream_LF, which reads just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 $! file on unix.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 $startup:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 $ on control_y then goto stopfdl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 $ open/write fdl []convert.fdl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 $ write fdl "SYSTEM"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 $ write fdl " SOURCE VAX/VMS"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 $ write fdl "FILE"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 $ write fdl " ORGANIZATION SEQUENTIAL"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 $ write fdl "RECORD"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 $ write fdl " BLOCK_SPAN YES"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 $ write fdl " CARRIAGE_CONTROL CARRIAGE_RETURN"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 $ write fdl " FORMAT STREAM"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 $ write fdl " SIZE 0"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 $ close fdl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 $ on control_y then goto endparamloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 $! Some symbols for use later on...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 $ spc = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 $ spc[0,8] = 32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 $ tab = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 $ tab[0,8] = 9
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 $! Scan all positional arguments, do wildcard expansion, and call the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 $! filter routine on each resulting filename.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 $ cnt = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 $paramloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 $ cnt = cnt + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 $! VMS only allows command line parameters P1 - P8, so stop after
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 $! processing 8 arguments.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 $ if cnt .eq. 9 then goto endparamloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 $! Skip any empty parameter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 $ if P'cnt' .eqs. "" then goto paramloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 $! Got a parameter - do wildcard expansion.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 $ arg = f$parse(P'cnt')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 $ write sys$output "Parsing ''arg'..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 $ last = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 $fileloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 $ file = f$search(arg, 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 $! f$search() returns "" after the last of multiple matches.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 $ if file .eqs. "" then goto endfileloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 $! Strip the version number.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 $ file = f$parse(file,,,"DEVICE") + f$parse(file,,,"DIRECTORY") + -
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 f$parse(file,,,"NAME") + f$parse(file,,,"TYPE")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 $! f$search() returns the same filename over and over if there are no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 $! wildcards in it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 $ if file .eqs. last then goto endfileloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 $ last = file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 $! Got a valid file - filter it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 $ gosub filter
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 $! Reset our error handling.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 $ on control_y then goto endparamloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 $! See if there's another matching filename.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 $ goto fileloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 $endfileloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 $! Check for another parameter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 $ goto paramloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 $endparamloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 $! Finished - delete the FDL file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 $ delete []convert.fdl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 $! So long, and thanks for all the fish...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 $ exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 $! User aborted with Control-Y during creation of FDL file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 $! Close the file, delete it, and exit with an error status.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 $stopfdl:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 $ close fdl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 $ delete []convert.fdl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 $ exit %X10000000
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 $! Filter a file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 $filter:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 $ write sys$output "Filtering ''file'..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 $! Get a temporary filename from the subroutine parameter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 $ tmp = f$parse(file,,,"DEVICE") + f$parse(file,,,"DIRECTORY") + -
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 "tmp_" + f$parse(file,,,"NAME") + f$parse(file,,,"TYPE")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 $ on control_y then goto aborted
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 $ open /read input 'file'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 $ open /write output 'tmp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 $ changed = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 $readloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 $ read/end_of_file=endreadloop/error=readlooperror input line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 $! Get the first 3 non-blank character on the line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 $ start = f$extract(0,3,f$edit(line,"COLLAPSE,LOWERCASE"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 $! If the line doesn't start with some form of "#if", just write it to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 $! the temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 $ if start .nes. "#if" then goto writeit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 $chkbkslsh:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 $! See if the line ends in a backslash. If not, write it to the temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 $ if f$extract(f$length(line)-1,1,line) .nes. "\" then goto writeit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 $! Ok, got a line that needs to be modified. Mark this file as changed,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 $! then replace the backslash at the end with the beginning of a comment
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 $! (/*), and write it to the temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 $ changed = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 $ line = f$extract(0,f$length(line)-1,line) + "/*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 $ write/symbol output line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 $! Get another line from the input.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 $ read/end_of_file=endreadloop/error=readlooperror input line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 $! Grab all the blank space from the beginning of the line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 $ spaces = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 $spaceloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 $ if (f$extract(0,1,line) .nes. spc) .and. (f$extract(0,1,line) .nes. tab) -
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 then goto endspaceloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 $ spaces = spaces + f$extract(0,1,line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 $ line = f$extract(1,f$length(line)-1,line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 $ goto spaceloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 $endspaceloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 $! Stick an end-comment (*/) after the leading blanks, then go back and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 $! check for a trailing backslash again, to catch code that continues
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 $! across multiple lines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 $ line = spaces + "*/ " + line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 $ goto chkbkslsh
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 $! Write the current line, (will either be an untouched line, or the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 $! last line of a continuation) to the temp file, and go back to look
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 $! for more input.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 $writeit:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 $ write/symbol output line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 $ goto readloop
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 $! Hit EOF. Close the input & output, and if the file was marked as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 $! changed, convert it from VMS VFC format, to the more common Stream_LF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 $! format, so it doesn't show up full of garbage if someone tries to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 $! edit it on another OS.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 $!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 $endreadloop:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 $ close input
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 $ close output
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 $ if changed .eq. 0 then goto nocopy
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 $ convert 'tmp' 'file' /fdl=[]convert.fdl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 $nocopy:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 $ delete 'tmp';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 $! Exit this subroutine.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 $ goto endfunc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 $! Got a read error. Say so, and trash the temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 $readlooperror:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 $ write sys$error "Error processing file ''file'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 $ goto errorend
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 $! Got an interrupt. Say so, and trash the temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 $aborted:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 $ write sys$error "Aborted while processing file ''file'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 $! Common code for read errors and interrupts.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 $errorend:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 $ close input
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 $ close output
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 $ delete 'tmp';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269 $ return %X10000000
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 $! End of filter subroutine.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 $endfunc:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 $ return
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 $
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 $! EOF