File: check.com

package info (click to toggle)
ftnchek 3.3.1-5
  • links: PTS
  • area: main
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, stretch
  • size: 8,484 kB
  • ctags: 5,960
  • sloc: ansic: 21,908; fortran: 5,748; yacc: 4,071; sh: 3,035; makefile: 896; lisp: 322; f90: 118; perl: 76
file content (524 lines) | stat: -rw-r--r-- 19,359 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
$! Name: CHECK.COM
$! Author: Bob Wells (wells@atm.ox.ac.uk)
$! Date: 14-Mar-00
$! $Id: check.com,v 1.11 2001/06/02 00:35:54 moniot Rel $
$! Purpose: To provide some checking of the VMS FTNCHEK distribution
$!          as in the unix distribution make check.
$!          Most of the prolems arise from the different way in which
$!          files are named and some effort is needed to to produce output
$!          identical to that of unix systems.
$!          MAKEDCL2INC involves the use of AWK which is not provided in the
$!          standard VMS distribution.  It can be obtained from the Freeware CD
$!          or downloaded from http://www.openvms.digital.com/freeware
$! Usage:  @CHECK
$!
$ Noadwrite: Subroutine ! P1= Text to be output
$! Purpose: perform non-advancing write to screen
$! Special case: terminates with newline if P1 = "done"
$ If P1 .NES. "done"
$ Then
$   Read/Time=0/Error=Next SYS$COMMAND Line/Prompt="''P1'"
$ Else
$   Read/Time=0/Error=Next SYS$COMMAND Line/Prompt="''F$FAO("!AS!/","done")'"
$ Endif
$ Next:
$ EndSubroutine
$!
$ Doedit: Subroutine ! P1=Filename P2=string P3=substitute string
$! Purpose: replace all occurrences of a string in a file
$ Open/Write TMP REPLACE.EDT
$ Write TMP "substitute\" + P2 + "\" + F$Edit(P3,"LOWERCASE") + "\ 1:999999 /notype"
$ Write TMP "ex"
$ Close TMP
$ Assign NLA0: SYS$OUTPUT
$ Edit/EDT/NOJOURNAL/Command=REPLACE.EDT 'P1'
$ Deassign SYS$OUTPUT
$ Delete/Noconfirm REPLACE.EDT;
$ EndSubroutine
$!
$ Doftnchek: Subroutine ! P1=FTNCHEK argument list P2=Output file
$! Purpose: run FTNCHEK with specified arguments and redirect output to a file
$ Open/Write TMP 'P2'
$ Set Noon
$ Assign/User TMP SYS$OUTPUT
$ Assign/User TMP SYS$ERROR
$ Ftnchek 'P1'
$ Close TMP
$ Set On
$ EndSubroutine
$!
$ Compare: Subroutine ! P1=filename P2=Unix extension
$! Purpose: compare two FTNCHEK output files for differences
$ Char = F$Extract ( F$Locate(".",P1)-1, 1, P1 ) + P2
$ Vary = "[.VARY]" + P1
$ Okay = "[.OKAY]" + P1
$ Call Doedit 'Vary' .;9 'Char'
$ Differences/Ignore=(Spacing,Blank)/Output=F1.TMP 'Vary' 'Okay'
$ Open/Read TMP F1.TMP 
$ Read TMP Line
$ Close TMP
$ Delete/Noconfirm F1.TMP;
$ If Line .EQS. "Number of difference sections found: 0"
$ Then
$  Call Noadwrite "."
$  Delete/Noconfirm 'Vary';*
$ Else
$  Write SYS$OUTPUT "====> Differences found in " + P1 + " test <===="
$  Write SYS$OUTPUT "Master: " + F$Search(Okay) 
$  Write SYS$OUTPUT "Test:   " + F$Search(Vary) 
$  Write SYS$OUTPUT "---------------------------------------------------------"
$  Purge 'Vary'
$ EndIf
$ EndSubroutine
$!
$ Check: Subroutine ! P1=file P2=.ext of output P3=options
$! Purpose: run FTNCHEK with specified options and compare output with master
$ Tmpfil  = F$Extract ( 0, F$Length(P1)-1, P1 ) + ".;9"
$ Cffil   = P1 + "." + P2
$ Params  = P3 + " " + Tmpfil
$ IF F$Search ("''P1'.F") .NES. "" Then Rename 'P1'.F 'Tmpfil'
$ Call Doftnchek "''Params'" [.VARY]'Cffil'
$ IF F$Search (Tmpfil) .NES. "" Then Rename 'Tmpfil' 'P1'.F
$ Call Compare 'Cffil' ".f"
$ EndSubroutine
$
$ Checklist: Subroutine ! P1=file
$! Purpose: run FTNCHEK with list checks using the .OPT files
$ Optfil = "''P1'.OPT"
$ If F$Search(Optfil) .NES. ""
$ Then
$  Copy 'Optfil' F1.TMP
$  Call Doedit F1.TMP "''P1'.f" " " 
$  Open/Read TMP F1.TMP
$  Read TMP Params
$  Close TMP
$  Delete/Noconfirm F1.TMP;*
$ Else
$  Params = "-list -symt -port"
$ Endif
$ Call Check 'P1' FCL "''Params'"
$ EndSubroutine
$!------------------------------------------------------------------------------
$ CheckF90: Subroutine ! P1=file P2=.ext of output P3=options
$! Purpose: like Check but for .F90 file extension
$ Tmpfil  = F$Extract ( 0, F$Length(P1)-1, P1 ) + ".;9"
$ Cffil   = P1 + "." + P2
$ Params  = P3 + " " + Tmpfil
$ IF F$Search ("''P1'.F90") .NES. "" Then Rename 'P1'.F90 'Tmpfil'
$ Call Doftnchek "''Params'" [.VARY]'Cffil'
$ IF F$Search (Tmpfil) .NES. "" Then Rename 'Tmpfil' 'P1'.F90
$ Call Compare 'Cffil' ".f90"
$ EndSubroutine
$
$ Checkfreeform: Subroutine ! P1=file
$! Purpose: run FTNCHEK with freeform checks using the .OPT files
$ Optfil = "''P1'.OPT"
$ If F$Search(Optfil) .NES. ""
$ Then
$  Copy 'Optfil' F1.TMP
$  Call Doedit F1.TMP "''P1'.f90" " " 
$  Open/Read TMP F1.TMP
$  Read TMP Params
$  Close TMP
$  Delete/Noconfirm F1.TMP;*
$ Else
$  Params = "-list -symt -port"
$ Endif
$ Call CheckF90 'P1' FCL "''Params'"
$ EndSubroutine
$!------------------------------------------------------------------------------
$ Checkexpert: Subroutine ! P1=file
$! Purpose: run FTNCHEK with list checks using the .OPT files and -nonovice
$! Adapted from Checklist by R. Moniot.
$ Optfil = "''P1'.OPT"
$ If F$Search(Optfil) .NES. ""
$ Then
$  Copy 'Optfil' F1.TMP
$  Call Doedit F1.TMP "''P1'.f" " " 
$  Open/Read TMP F1.TMP
$  Read TMP Params
$  Close TMP
$  Delete/Noconfirm F1.TMP;*
$ Else
$  Params = "-list -symt -port"
$ Endif
$ Params = "-nonovice " + Params
$ Call Check 'P1' FCX "''Params'"
$ EndSubroutine
$!
$!------------------------------------------------------------------------------
$ On Control_Y Then GoTo Finish
$ On Warning Then GoTo Finish
$ On Error Then GoTo Finish
$ Setverify = 'F$Verify(0)'
$ Startdir = F$Environment("DEFAULT")
$ Comma = ","                 ! For use as a list separator
$!
$! Set up FTNCHEK command
$ File = F$Search("FTNCHEK.EXE")
$ If File .EQS. ""
$  Then
$   Write SYS$OUTPUT "ERROR ===> Cannot run checks: no FTNCHEK found <==="
$   GoTo Finish
$  Else
$   FTNCHEK := $'File'
$ EndIf
$!
$ Set Default [.TEST]
$!
$! Check for pre-defined logical (environment) variables
$ Assign F1.TMP SYS$OUTPUT
$ Show Logical
$ Deassign SYS$OUTPUT
$ Search/Nowarning/Output=F2.TMP F1.TMP FTNCHEK_
$ Delete/Noconfirm F1.TMP;
$ Open/Read TMP F2.TMP
$ Read/End_Of_File=Empty_Logical TMP Line
$  Close TMP
$  Write SYS$OUTPUT "WARNING ===> Logical names are defined <===
$  Type F2.TMP
$  Write SYS$OUTPUT "These need to be DEASSIGNed before running CHECK"
$  Delete/Noconfirm F2.TMP;
$  GoTo Finish
$ Empty_Logical:
$ Close TMP
$ Delete/Noconfirm F2.TMP;
$!
$! Check for existing default configuration files
$ If F$Search("SYS$LOGIN:.FTNCHEKRC") .NES. ""
$  Then
$  Write SYS$OUTPUT "WARNING ===> SYS$LOGIN:.FTNCHEKRC exists <==="
$  Write SYS$OUTPUT "delete or rename it before running check"
$  GoTo Finish
$ EndIf
$ If F$Search("SYS$LOGIN:FTNCHEK.INI") .NES. ""
$  Then
$  Write SYS$OUTPUT "WARNING ===> SYS$LOGIN:FTNCHEK.INI exists <==="
$  Write SYS$OUTPUT "delete or rename it before running check"
$  GoTo Finish
$ EndIf
$!
$! Check for [.VARY] subdirectory and create it if it does not exist
$ If F$Search("VARY.DIR") .EQS. ""
$  Then
$  Write SYS$OUTPUT "NOTE: [.VARY] subdirectory does not exist: creating it now."
$  Create/Dir [.VARY]
$ Endif
$!
$ Write SYS$OUTPUT "================================================================"
$ Write SYS$OUTPUT "There should be no file differences reported by these tests."
$ Write SYS$OUTPUT "Output files matching master output files will be removed,"
$ Write SYS$OUTPUT "leaving any erroneous output files in the subdirectory"
$ Write SYS$OUTPUT "[.TEST.VARY] for manual examination.  If you built FTNCHEK with"
$ Write SYS$OUTPUT "non-standard compilation options, there may be some differences."
$ Write SYS$OUTPUT "================================================================"
$!
$!------------------------------------------------------------------------------
$ List: Call Noadwrite "checking listing output: "
$ Filelist = "AVERAGE,BACKSLASH,CHESTNUTS,COMCLASH,COMCMP,COMPLEX,COMTEST," + -
 "COMUSAGE,CORRECT,DIMS,DO_ENDDO,NAMELIST,NOBLANKS,STRINGS,UNIXINCLUDED," + -
 "DECTAB,QUAD,SEQUENCE,SUBSTR,AUTOARRAY,CYCLE-EXIT,RELOPS,EMBEDDED-SPACE," + -
 "ARG-ALIAS,COMMON-ALIAS,DEC-PARAMETER,IFFY,PURE-FUNCTION,PRIMES,LABELTEST," + -
 "CASE,BLOCKERRORS,T208F"
$! HELP omitted as VMS prints / instead of - switches and has different defaults
$! INCLUDE omitted. VMS output is different for include files
$! ALLKEYWORDS omitted. VMS output is different for include files
$ Define FTNCHEK_F77 YES
$ M = 0
$ List1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endlist1
$   Call Checklist 'File' 
$   M = M + 1
$   Goto List1
$ Endlist1: Call Noadwrite "done"
$! Repeat for expert mode
$ Expert: Call Noadwrite "checking expert-mode output: "
$ M = 0
$ Expert1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endexpert1
$   Call Checkexpert 'File' 
$   M = M + 1
$   Goto Expert1
$ Endexpert1: Call Noadwrite "done"
$ Deassign FTNCHEK_F77
$!
$!------------------------------------------------------------------------------
$ Freeform: Call Noadwrite "checking free-form output: "
$ Filelist = "MODEL,BLOCKCHECK"
$ Define FTNCHEK_F90 YES
$ Define FTNCHEK_SOURCE "free"
$ M = 0
$ Freeform1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endfreeform1
$   Call Checkfreeform 'File' 
$   M = M + 1
$   Goto Freeform1
$ Endfreeform1: Call Noadwrite "done"
$ Deassign FTNCHEK_F90
$ Deassign FTNCHEK_SOURCE
$!
$!------------------------------------------------------------------------------
$ Standard: Call Noadwrite "checking standard-compliance warnings: "
$ Filelist = "IOKEYWORDS,F95DELETED"
$ M = 0
$ Standard1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endstandard1
$   Call Check 'File' FC0 "-nof77 -nof90 -nof95"
$   Call Check 'File' FC1 "  -f77 -nof90 -nof95"
$   Call Check 'File' FC2 "-nof77   -f90 -nof95"
$   Call Check 'File' FC3 "-nof77 -nof90   -f95"
$   M = M + 1
$   Goto Standard1
$ Endstandard1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Size: Call Noadwrite "checking size and type mismatch: "
$ Filelist = "ASSIGN,WORDSIZE,MIXED-EQUIV"
$ M = 0
$ Size1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endsize1
$   Call Check 'File' FC1 "-notrun -noport -nof77 -lis"
$   Call Check 'File' FC2 "-notrun -noport   -f77"
$   Call Check 'File' FC3 "-notrun   -port -nof77"
$   Call Check 'File' FC4 "-notrun   -port   -f77"
$   Call Check 'File' FC5 "  -trun -noport -nof77"
$   Call Check 'File' FC6 "  -trun -noport   -f77"
$   Call Check 'File' FC7 "  -trun   -port -nof77"
$   Call Check 'File' FC8 "  -trun   -port   -f77"
$   Call Check 'File' FCA "  -trun   -port -nof77 -word=2"
$   Call Check 'File' FCB "  -trun   -port -nof77 -word=4"
$   Call Check 'File' FCC "  -trun   -port -nof77 -word=8"
$   Call Check 'File' FCD "  -trun -noport -nof77 -word=2"
$   Call Check 'File' FCE "  -trun -noport -nof77 -word=4"
$   Call Check 'File' FCF "  -trun -noport -nof77 -word=8"
$   M = M + 1
$   Goto Size1
$ Endsize1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Args: Call Noadwrite "checking -args setting: "
$ Filelist = "01,02,03,04,05,06,07,08,09,10,11,12,13,14,15"
$ M = 0
$ Args1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endargs1
$   N = 0
$   Args2: Call Check "ARGS''File'" "FC''N'" "-args=''N'" 
$     N = N + 1
$     If N .LT. 4 Then Goto Args2
$   M = M + 1
$   Goto Args1
$ Endargs1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Array: Call Noadwrite "checking -array setting: "
$ Filelist = "ARRAYCLASH"
$ M = 0
$ Array1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endarray1
$   N = 0
$   Array2: Call Check 'File' "FC''N'" "-array=''N' -port"
$     N = N + 1
$     If N .LT. 4 Then Goto Array2
$   M = M + 1
$   Goto Array1
$ Endarray1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Common: Call Noadwrite "checking -common setting: "
$ Filelist = "COMCMP,COMUSAGE"
$ M = 0
$ Common1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endcommon1
$   N = 0
$   Common2: Call Check 'File' "FC''N'" "-common=''N' -nof77"
$     N = N + 1
$     If N .LT. 4 Then Goto Common2
$   M = M + 1
$   Goto Common1
$ Endcommon1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Intrinsic: Call Noadwrite "checking -intrinsic setting: "
$ Filelist = "INTRINSTEST"
$ M = 0
$ Intrinsic1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endintrinsic1
$   Call Check 'File' FC0 "-intrinsic=none"
$   Call Check 'File' FC1 "-intrinsic=none,extra"
$   Call Check 'File' FC2 "-intrinsic=none,unix"
$   Call Check 'File' FC3 "-intrinsic=none,vms"
$   Call Check 'File' FC4 "-intrinsic=no-rand-no-arg,no-vms,unix"
$   Call Check 'File' FC5 "-intrinsic=no-rand-one-arg,no-vms,unix"
$   Call Check 'File' FC6 "-intrinsic=no-iargc-no-arg,no-vms,unix"
$   Call Check 'File' FC7 "-intrinsic=no-iargc-one-arg,no-vms,unix"
$   Call Check 'File' FC8 "-intrinsic=all"
$   M = M + 1
$   Goto Intrinsic1
$ Endintrinsic1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Output: Call Noadwrite "checking -output setting: "
$ Call Check AVERAGE FC2 "-symt -list -port -out=average.out"
$ Rename AVERAGE.OUT [.VARY]
$ Call Compare AVERAGE.OUT ".f"
$ Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Usage: Call Noadwrite "checking -usage setting: "
$ Filelist = "USAGE"
$ M = 0
$ Usage1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endusage1
$   Call Check 'File' FC0 "-usage=none"
$   Call Check 'File' FC1 "-usage=none,com-var-uninitialized,var-uninitialized"
$   Call Check 'File' FC2 "-usage=none,com-block-unused,com-var-set-unused,com-var-unused,ext-unused,var-set-unused,var-unused"
$   Call Check 'File' FC3 "-usage=all"
$   M = M + 1
$   Goto Usage1
$ Endusage1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Project: Call Noadwrite "checking project files: "
$ Rename CORRECT.F CORREC.;9
$ Call Doftnchek  "-project correc.;9" "[.VARY]CORRECT.FC1"
$ Rename CORREC.;9 CORRECT.F
$ Call Doedit [.VARY]CORRECT.FC1 correc.prj correct.prj
$ Call Doftnchek "CORREC.PRJ;1" "[.VARY]CORRECT.PCL"
$ Rename CORREC.PRJ [.VARY]CORRECT.PRJ
$ Call Doedit [.VARY]CORRECT.PCL correc.prj;1 correct.prj
$ Call Compare CORRECT.FC1 ".f"
$ Call Compare CORRECT.PRJ ".f"
$ Call Compare CORRECT.PCL ".f"
$ Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Rc: Call Noadwrite "checking reading rc file: "
$ Open/Write TMP FTNCHEK.INI
$ Write TMP "f77=all"
$ Write TMP "symtab"
$ Close TMP
$ Rename DO_ENDDO.F DO_ENDD.;9
$ Call Doftnchek "-f77=no-long-names,no-name-underscore do_endd.;9" [.VARY]RC.FCL
$ Rename DO_ENDD.;9 DO_ENDDO.F
$ Call Doedit [.VARY]RC.FCL .;9 o.f
$ Call Compare RC.FCL ".f"
$ Delete/Noconfirm FTNCHEK.INI;
$ Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Wildcard: Call Noadwrite "check interpreting wildcards: "
$ Call Doftnchek  "-port=mixed* -port=help" "[.VARY]WILDCARD.FC1"
$ Call Doedit [.VARY]WILDCARD.FC1 "/port"  "-port"
$ Call Compare WILDCARD.FC1 ".f"
$ Call Doftnchek  "-usage=no-*var* -usage=help" "[.VARY]WILDCARD.FC2"
$ Call Doedit [.VARY]WILDCARD.FC2 "/usage"  "-usage"
$ Call Compare WILDCARD.FC2 ".f"
$ Call Doftnchek  "-usage=no-var* -usage=help" "[.VARY]WILDCARD.FC3"
$ Call Doedit [.VARY]WILDCARD.FC3 "/usage"  "-usage"
$ Call Compare WILDCARD.FC3 ".f"
$ Call Doftnchek  "-f77=*array*,format* -f77=help" "[.VARY]WILDCARD.FC4"
$ Call Doedit [.VARY]WILDCARD.FC4 "/f77"  "-f77"
$ Call Compare WILDCARD.FC4 ".f"
$ Call Doftnchek  "-pretty=*ugly* -pretty=help" "[.VARY]WILDCARD.FC5"
$ Call Doedit [.VARY]WILDCARD.FC5 "/pretty"  "-pretty"
$ Call Compare WILDCARD.FC5 ".f"
$ Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Makedcls: Call Noadwrite "checking -makedcls setting: "
$ Filelist = "BUILTIN,DCLTEST,DIMS,NAMELIST,PARAMS,T208A,T208B,T208C,T208D," + -
  "T208E,T208F,T208G,T208H,T208I,T208J,T208K,T208L,T208M,T208N,T208O,T208P," + -
  "T208Q,T208R,T208S,T208T,T208U,T208V,T208W,T208X"
$ M = 0
$ Makedcls1: File = F$element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endmakedcls1
$   Tmpfil = F$Extract ( 0, F$Length(File)-1, File )
$   Rename 'File'.F 'Tmpfil'.;9
$   N = 0
$   P = 1
$   Makedcls2: Call Doftnchek "-nocheck -makedcls=''P' ''Tmpfil'.;9" NLA0:
$     If F$Search("''Tmpfil'.DCL") .NES. ""
$      Then
$        Rename 'Tmpfil'.DCL [.VARY]'File'.DC'N'
$        Open/Read TMP '[.VARY]'File'.DC'N'
$        Read/End_Of_File=Dclsempty TMP Line
$        Close TMP
$        Call Compare 'File'.DC'N' ".f"
$        Goto Makedclsnext
$        Dclsempty:  WRITE SYS$OUTPUT "Empty declarations file "+ F$Search("[.VARY]''Cffil'") + " should have been deleted"
$     Endif
$     Makedclsnext: P = P + P
$     N = N + 1
$     If N .LT. 10 Then Goto Makedcls2
$   Rename 'Tmpfil'.;9 'File'.F
$   M = M + 1
$   Goto Makedcls1
$ Endmakedcls1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$ Vcg: Call Noadwrite "checking -vcg setting: "
$ filelist = "COMCMP,COMUSAGE"
$ M = 0
$ Vcg1: File = F$Element(M,Comma,Filelist)
$   If File .EQS. Comma Then Goto Endvcg1
$   Tmpfil = F$Extract ( 0, F$Length(File)-1, File )
$   Rename 'File'.f 'Tmpfil'.;9
$   Call Doftnchek "-vcg  ''Tmpfil'.;9" NLA0:
$   Rename 'Tmpfil'.;9 'File'.f
$   Rename 'Tmpfil'.VCG [.VARY]'File'.VCG
$   Call Compare 'File'.VCG ".f"
$   M = M + 1
$   Goto Vcg1
$ Endvcg1: Call Noadwrite "done"
$!
$!------------------------------------------------------------------------------
$! Check for GAWK - needed for dcl2inc processing
$ Dcl2inc: Filelist = "T208X"
$ Assign F1.TMP SYS$OUTPUT
$ Show Symbol GAWK
$ Deassign SYS$OUTPUT
$ Open/Read TMP F1.TMP
$ Read TMP Line
$ Close TMP
$ Delete/Noconfirm F1.TMP;
$ If Line  .NES. "%DCL-W-UNDSYM, undefined symbol - check validity and spelling"
$  Then
$   Call Noadwrite "checking dcl2inc processing: "
$   M = 0
$   Dcl2inc1: File = F$Element(M,Comma,Filelist)
$     If File .EQS. Comma Then Goto Enddcl2inc1
$     Tmpfil = F$Extract ( 0, F$Length(File)-1, File ) 
$     Rename 'File'.f 'Tmpfil'.;9
$     Call Doftnchek "-nocheck -makedcl=1 ''Tmpfil'.;9" NLA0:
$     Rename 'Tmpfil'.;9 'File'.f
$     Assign/User 'File'.ERR SYS$ERROR
$     Assign/User [.VARY]'File'.MAK SYS$OUTPUT
$     Gawk -f [-]DCL2INC.AWK 'Tmpfil'.DCL
$     Deassign SYS$OUTPUT
$     Rename 'Tmpfil'.DCL [.VARY]'File'.DCL
$     Call Compare 'File'.DCL ".f"
$     Rename 'Tmpfil'.DCN [.VARY]'File'.DCN
$     Call Compare 'File'.DCN ".f"
$     Call Doedit [.VARY]'File'.MAK 'Tmpfil'. 'File'.
$     Call Compare 'File'.MAK ".f"
$     Rename 'File'.ERR [.VARY]
$     Call Doedit [.VARY]'File'.ERR 'Tmpfil'. 'File'.
$     Call Compare 'File'.ERR ".f"
$     Dcl2inc2: File = F$Search("*.INC")
$       If File .EQS. "" Then Goto Enddcl2inc2
$       Cffil = F$Parse(File,,,"NAME") + ".INC"
$       Rename 'Cffil' [.VARY]
$       Call Compare 'Cffil' ".f"
$       Goto Dcl2inc2
$   Enddcl2inc2: M = M + 1
$   Goto Dcl2inc1
$ Enddcl2inc1: Call Noadwrite "done"
$ Else
$  Write SYS$OUTPUT "WARNING ===> dcl2inc processing not checked <===
$  Write SYS$OUTPUT "Unable to locate GAWK on this system"
$ Endif
$!
$ Finish:
$ Set Default 'Startdir'
$ If Setverify Then Set Verify
$ EXIT