OSDN Git Service

MOPAC 6.06 is included in the binary
[molby/Molby.git] / mopac606_nbo / src / rmopac.com
1 $!   COMMAND FILE TO RUN A MOPAC JOB. THIS FILE SHOULD RESIDE IN THE
2 $!   MOPAC DIRECTORY. IT SHOULD BE ACCESSED FROM MOPAC.COM, BUT CAN
3 $!   STAND ALONE, IF NECESSARY.
4 $!
5 $!   THE CALL IS        $RMOPAC filename  directory  
6 $!
7 $       SHOW TIME
8 $!
9 $       SET VERIFY
10 $!
11 $!      Make assignments
12 $!
13 $DEL*ETE :== DELETE
14 $       IF P2 .NES. ""  THEN SET DEFAULT 'P2'
15 $       OPEN /ERR=NOEND1 DUMMY 'P1'.END  ! see if shutdown file is there
16 $       DELETE/NOCONFIRM 'P1'.END;*
17 $NOEND1:
18 $       ASSIGN 'P1'.DAT FOR005
19 $       ASSIGN 'P1'.OUT FOR006
20 $       ASSIGN 'P1'.RES FOR009
21 $       ASSIGN 'P1'.DEN FOR010
22 $       ASSIGN SYS$OUTPUT FOR011
23 $       ASSIGN SETUP.DAT SETUP
24 $       ASSIGN 'P1'.ARC FOR012
25 $       ASSIGN 'P1'.GPT FOR013
26 $       ASSIGN 'P1'.SYB FOR016
27 $       ASSIGN 'P1'.UMP FOR020
28 $       ASSIGN 'P1'.END SHUTDOWN
29 $!
30 $       ON ERROR        THEN GOTO AA
31 $       ON CONTROL_Y    THEN GOTO AA    ! Cleanup if ^Y
32 $       TIM=F$TIME()
33 $       STARTTIME=F$CVTIME(TIM)
34 $       RUN/NODEBUG MOPACDIRECTORY:MOPAC
35 $       STOPTIME=F$CVTIME(F$TIME())
36 $!      SET NOVERIFY
37 $!
38 $       SHOW TIME
39 $!
40 $!      Get job information to mail to user at end of job.
41 $!      This will only happen if the elapsed time of the MOPAC
42 $!      run is greater than 2 hours.
43 $!
44 $!      Start the calculation of the time difference
45 $!
46 $ DAYS1=(F$INTEGER(F$EXTRACT(5,2,STARTTIME))*31) -
47         +F$INTEGER(F$EXTRACT(8,2,STARTTIME))
48 $ DAYS2=(F$INTEGER(F$EXTRACT(5,2,STOPTIME))*31) -
49         +F$INTEGER(F$EXTRACT(8,2,STOPTIME))
50 $ HRS1=F$INTEGER(F$EXTRACT(11,2,STARTTIME))
51 $ HRS2=F$INTEGER(F$EXTRACT(11,2,STOPTIME))
52 $ MIN1=F$INTEGER(F$EXTRACT(14,2,STARTTIME))
53 $ MIN2=F$INTEGER(F$EXTRACT(14,2,STOPTIME))
54 $ TDIFF=(((24*DAYS2)+HRS2)-((24*DAYS1)+HRS1))*60 +MIN2-MIN1
55 $!
56 $!      TDIFF now contains the number of minutess between the start and end
57 $!      of the job.  If this is greater than 5 then send mail to the user 
58 $!      (in case the user forgot what was being run)
59 $!
60 $  IF TDIFF .LE. 60 THEN GOTO AA
61 $!
62 $!   The job lasted for more than 60 minutes by the wall-clock
63 $!
64 $!   Open the .DAT file to get the job data to write into the message file
65 $!
66 $ OPEN/READ FILE1 'P2''P1'.DAT
67 $ READ FILE1 REC1
68 $ READ FILE1 REC2
69 $ READ FILE1 REC3
70 $ CLOSE FILE1
71 $!
72 $!  Write data out to file to be mailed to the user.
73 $!
74 $ STARTDAT=F$EXTRACT(0,17,TIM)
75 $ OPEN/WRITE FILE2 'P2''P1'.SUM
76 $ WRITE FILE2 "Job ''p1' run from directory ''p2' has finished."
77 $ WRITE FILE2 ""
78 $ WRITE FILE2 "Run started: ''startdat'"
79 $ WRITE FILE2 "Run time approximately: ''tdiff' minutes"
80 $ write file2 "Information extracted from ''p1'.DAT file follows:"
81 $ WRITE FILE2 ""
82 $ WRITE FILE2 rec1
83 $ WRITE FILE2 rec2
84 $ WRITE FILE2 rec3
85 $ CLOSE FILE2
86 $!
87 $!  Get name of user to whom to mail file
88 $!
89 $!   TO INSTALLER OF MOPAC:  ONE OF THE FOLLOWING SETS OF COMMANDS SHOULD
90 $!   WORK
91 $!                           SET 1
92 $ USENAM == F$EXTRACT(1,F$LENGTH(F$USER())-2,F$USER())
93 $!                           SET 2
94 $ DIRECTT := 'F$DIRECTORY()'
95 $ LDIRECTT = F$LENGTH(DIRECTT)
96 $ USENAM = F$EXTRACT(1,LDIRECTT-2,DIRECTT)
97 $ PPER = 'F$LOCATE(".",DIRECTT)'
98 $ IF PPER .LT. LDIRECTT THEN USENAM := 'F$EXTRACT(1,PPER-1,DIRECTT)'
99 $!                           END OF SET 2
100 $!
101 $!   Mail the file to user notifying end-of-job.
102 $!
103 $ MAIL 'P1'.SUM 'USENAM'
104 $ DELETE/NOCONFIRM 'P1'.SUM;
105 $!
106 $ AA:
107 $       SET NOCONTROL_Y                  ! Continue cleanup if ^Y
108 $       OPEN /ERR=NOEND DUMMY 'P1''PEND' ! see if shutdown file is there
109 $       DELETE/NOCONFIRM 'P1'.END;*
110 $NOEND: CLOSE DUMMY
111 $       SET CONTROL_Y
112 $       SET NOVERIFY
113 $!
114 $!      END
115 $!