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
|
$ SAVE_VERIFY = F$VERIFY()
$ SET NOVERIFY
$ !-----------------------------------------------------------------------
$ ! Compile C files in connected directory:
$ !
$ ! Usage: @CCOM prefix compileoptions
$ !
$ ! where prefix is a wild-card specification of the names of .C files
$ ! to be compiled.
$ !
$ ! Examples:
$ ! Compile everything:
$ ! @CCOM *
$ !
$ ! Compile today's efforts:
$ ! @CCOM * "" /SINCE
$ !
$ ! Compile certain routines changed since yesterday:
$ ! @CCOM F%%%.C,G*.C,*UPD* /LIST/MACHINE_CODE /SINCE=YESTERDAY
$ !
$ ! Note in the last example that the extension .C must be supplied
$ ! for all but the last file, which gets one automatically. In the
$ ! second example, the switch /SINCE means the same as /SINCE:TODAY.
$ ! [27-NOV-86]
$ !-----------------------------------------------------------------------
$ !
$ ON CONTROL_Y THEN $ GOTO DONE
$ !
$ IF P1 .EQS. "" THEN INQUIRE P1 "Wild-card name of C files to compile"
$ !
$ DIRECTORY /VER=1/COL=1/NODATE/NOSIZE/NOHEAD/NOTRAIL/OUT=DIR.TMP'P3' 'P1'.C
$ !
$ IF .NOT. $STATUS THEN GOTO DIRECTORY_ERROR
$ !
$ OPEN /READ DIRFILE DIR.TMP
$ !
$ NEWLINE:
$ READ /END=DONE DIRFILE NAME
$ DEV := 'F$PARSE(NAME,,,"DEVICE")'
$ DIR := 'F$PARSE(NAME,,,"DIRECTORY")'
$ NAM := 'F$PARSE(NAME,,,"NAME")'
$ EXT := 'F$PARSE(NAME,,,"TYPE")'
$ LEADER := 'DEV''DIR''NAM'
$ C_STAMP = F$FILE_ATTRIBUTES("''LEADER'.C","RDT")
$ C_STAMP = F$CVTIME(C_STAMP)
$ OBJ_STAMP = F$SEARCH("''LEADER'.OBJ")
$ IF OBJ_STAMP .NES. "" THEN -
OBJ_STAMP = F$FILE_ATTRIBUTES("''LEADER'.OBJ","RDT")
$ IF OBJ_STAMP .NES. "" THEN -
OBJ_STAMP = F$CVTIME(OBJ_STAMP)
$ IF C_STAMP .LES. OBJ_STAMP THEN -
IF F$MODE() .EQS. "INTERACTIVE" THEN -
WRITE SYS$OUTPUT "''LEADER'.OBJ is up-to-date"
$ IF C_STAMP .LES. OBJ_STAMP THEN -
GOTO NEWLINE
$ WRITE SYS$OUTPUT "{",NAME,"}"
$ SET NOON ! Ignore errors
$ DEFINE/USER SYS SYS$LIBRARY ! so #include <sys/foo.h> works
$ CC /NOLIST/DEBUG=(SYMBOLS,TRACEBACK) 'P2' 'NAME' /OBJECT='LEADER'.OBJ
$ SET ON ! Restore error checking
$ GOTO NEWLINE
$ !
$ DONE:
$ CLOSE DIRFILE/ERROR=NOTOPEN
$ !
$ NOTOPEN:
$ SET FILE /PROTECTION=(W:REWD) DIR.TMP;*
$ DELETE DIR.TMP;*
$ !
$ GOTO EXIT
$ !
$ DIRECTORY_ERROR:
$ WRITE SYS$OUTPUT "Error: ''F$MESSAGE()'"
$ SET FILE /PROTECTION=(W:REWD) DIR.TMP;*
$ DELETE DIR.TMP;*
$ !
$ EXIT:
$ IF SAVE_VERIFY THEN SET VERIFY
$ EXIT
|