Adam 7/30/2014
[unres.git] / source / cluster / wham / src-M-NEWCORR / readrtns.F
1       subroutine read_control
2 C
3 C Read molecular data
4 C
5       implicit none
6       include 'DIMENSIONS'
7       include 'sizesclu.dat'
8       include 'COMMON.IOUNITS'
9       include 'COMMON.TIME1'
10       include 'COMMON.SBRIDGE'
11       include 'COMMON.CONTROL'
12       include 'COMMON.CLUSTER'
13       include 'COMMON.CHAIN'
14       include 'COMMON.HEADER'
15       include 'COMMON.FFIELD'
16       include 'COMMON.FREE'
17       include 'COMMON.INTERACT'
18       character*320 controlcard,ucase
19 #ifdef MPL
20       include 'COMMON.INFO'
21 #endif
22       integer i
23
24       read (INP,'(a80)') titel
25       call card_concat(controlcard)
26
27       call readi(controlcard,'NRES',nres,0)
28       call readi(controlcard,'RESCALE',rescale_mode,2)
29       call reada(controlcard,'DISTCHAINMAX',distchainmax,50.0d0)
30       write (iout,*) "DISTCHAINMAX",distchainmax
31       call readi(controlcard,'PDBOUT',outpdb,0)
32       call readi(controlcard,'MOL2OUT',outmol2,0)
33       refstr=(index(controlcard,'REFSTR').gt.0)
34       write (iout,*) "REFSTR",refstr
35       pdbref=(index(controlcard,'PDBREF').gt.0)
36       iscode=index(controlcard,'ONE_LETTER')
37       tree=(index(controlcard,'MAKE_TREE').gt.0)
38       min_var=(index(controlcard,'MINVAR').gt.0)
39       plot_tree=(index(controlcard,'PLOT_TREE').gt.0)
40       punch_dist=(index(controlcard,'PUNCH_DIST').gt.0)
41       call readi(controlcard,'NCUT',ncut,1)
42       call readi(controlcard,'SYM',symetr,1)
43       write (iout,*) 'sym', symetr
44       call readi(controlcard,'NSTART',nstart,0)
45       call readi(controlcard,'NEND',nend,0)
46       call reada(controlcard,'ECUT',ecut,10.0d0)
47       call reada(controlcard,'PROB',prob_limit,0.99d0)
48       write (iout,*) "Probability limit",prob_limit
49       lgrp=(index(controlcard,'LGRP').gt.0)
50       caonly=(index(controlcard,'CA_ONLY').gt.0)
51       print_dist=(index(controlcard,'PRINT_DIST').gt.0)
52       call multreada(controlcard,'CUTOFF',rcutoff,ncut,-1.0d0)
53       call readi(controlcard,'IOPT',iopt,2) 
54       lside = index(controlcard,"SIDE").gt.0
55       efree = index(controlcard,"EFREE").gt.0
56       call readi(controlcard,'NTEMP',nT,1)
57       write (iout,*) "nT",nT
58       call multreada(controlcard,'TEMPER',beta_h,nT,300.0d0)
59       write (iout,*) "nT",nT
60       write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
61       do i=1,nT
62         beta_h(i)=1.0d0/(1.987D-3*beta_h(i))
63       enddo
64       write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
65       lprint_cart=index(controlcard,"PRINT_CART") .gt.0
66       lprint_int=index(controlcard,"PRINT_INT") .gt.0
67       with_dihed_constr = index(controlcard,"WITH_DIHED_CONSTR").gt.0
68       if (min_var) iopt=1
69       return
70       end
71 c--------------------------------------------------------------------------
72       subroutine molread
73 C
74 C Read molecular data.
75 C
76       implicit none
77       include 'DIMENSIONS'
78       include 'COMMON.IOUNITS'
79       include 'COMMON.GEO'
80       include 'COMMON.VAR'
81       include 'COMMON.INTERACT'
82       include 'COMMON.LOCAL'
83       include 'COMMON.NAMES'
84       include 'COMMON.CHAIN'
85       include 'COMMON.FFIELD'
86       include 'COMMON.SBRIDGE'
87       include 'COMMON.HEADER'
88       include 'COMMON.CONTROL'
89       include 'COMMON.CONTACTS'
90       include 'COMMON.TIME1'
91       include 'COMMON.TORCNSTR'
92 #ifdef MPL
93       include 'COMMON.INFO'
94 #endif
95       character*4 sequence(maxres)
96       character*800 weightcard
97       integer rescode
98       double precision x(maxvar)
99       integer itype_pdb(maxres)
100       logical seq_comp
101       integer i,j,kkk
102 C
103 C Body
104 C
105 C Read weights of the subsequent energy terms.
106       call card_concat(weightcard)
107       call reada(weightcard,'WSC',wsc,1.0d0)
108       call reada(weightcard,'WLONG',wsc,wsc)
109       call reada(weightcard,'WSCP',wscp,1.0d0)
110       call reada(weightcard,'WELEC',welec,1.0D0)
111       call reada(weightcard,'WVDWPP',wvdwpp,welec)
112       call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
113       call reada(weightcard,'WCORR4',wcorr4,0.0D0)
114       call reada(weightcard,'WCORR5',wcorr5,0.0D0)
115       call reada(weightcard,'WCORR6',wcorr6,0.0D0)
116       call reada(weightcard,'WTURN3',wturn3,1.0D0)
117       call reada(weightcard,'WTURN4',wturn4,1.0D0)
118       call reada(weightcard,'WTURN6',wturn6,1.0D0)
119       call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
120       call reada(weightcard,'WSCCOR',wsccor,1.0D0)
121       call reada(weightcard,'WBOND',wbond,1.0D0)
122       call reada(weightcard,'WTOR',wtor,1.0D0)
123       call reada(weightcard,'WTORD',wtor_d,1.0D0)
124       call reada(weightcard,'WANG',wang,1.0D0)
125       call reada(weightcard,'WSCLOC',wscloc,1.0D0)
126       call reada(weightcard,'SCAL14',scal14,0.4D0)
127       call reada(weightcard,'SCALSCP',scalscp,1.0d0)
128       call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
129       call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
130       if (index(weightcard,'SOFT').gt.0) ipot=6
131 C 12/1/95 Added weight for the multi-body term WCORR
132       call reada(weightcard,'WCORRH',wcorr,1.0D0)
133       if (wcorr4.gt.0.0d0) wcorr=wcorr4
134       weights(1)=wsc
135       weights(2)=wscp
136       weights(3)=welec
137       weights(4)=wcorr
138       weights(5)=wcorr5
139       weights(6)=wcorr6
140       weights(7)=wel_loc
141       weights(8)=wturn3
142       weights(9)=wturn4
143       weights(10)=wturn6
144       weights(11)=wang
145       weights(12)=wscloc
146       weights(13)=wtor
147       weights(14)=wtor_d
148       weights(15)=wstrain
149       weights(16)=wvdwpp
150       weights(17)=wbond
151       weights(18)=scal14
152       weights(19)=wsccor
153       write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
154      &  wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wturn3,
155      &  wturn4,wturn6,wsccor
156    10 format (/'Energy-term weights (unscaled):'//
157      & 'WSCC=   ',f10.6,' (SC-SC)'/
158      & 'WSCP=   ',f10.6,' (SC-p)'/
159      & 'WELEC=  ',f10.6,' (p-p electr)'/
160      & 'WVDWPP= ',f10.6,' (p-p VDW)'/
161      & 'WBOND=  ',f10.6,' (stretching)'/
162      & 'WANG=   ',f10.6,' (bending)'/
163      & 'WSCLOC= ',f10.6,' (SC local)'/
164      & 'WTOR=   ',f10.6,' (torsional)'/
165      & 'WTORD=  ',f10.6,' (double torsional)'/
166      & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
167      & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
168      & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
169      & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
170      & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
171      & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
172      & 'WTURN4= ',f10.6,' (turns, 4th order)'/
173      & 'WTURN6= ',f10.6,' (turns, 6th order)'/
174      & 'WSCCOR= ',f10.6,' (SC-backbone torsinal correalations)')
175
176       if (wcorr4.gt.0.0d0) then
177         write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
178      &   'between contact pairs of peptide groups'
179         write (iout,'(2(a,f5.3/))')
180      &  'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
181      &  'Range of quenching the correlation terms:',2*delt_corr
182       else if (wcorr.gt.0.0d0) then
183         write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
184      &   'between contact pairs of peptide groups'
185       endif
186       write (iout,'(a,f8.3)')
187      &  'Scaling factor of 1,4 SC-p interactions:',scal14
188       write (iout,'(a,f8.3)')
189      &  'General scaling factor of SC-p interactions:',scalscp
190       r0_corr=cutoff_corr-delt_corr
191       do i=1,20
192         aad(i,1)=scalscp*aad(i,1)
193         aad(i,2)=scalscp*aad(i,2)
194         bad(i,1)=scalscp*bad(i,1)
195         bad(i,2)=scalscp*bad(i,2)
196       enddo
197
198 #ifdef AIX
199       call flush_(iout)
200 #else
201       call flush(iout)
202 #endif
203       print *,'indpdb=',indpdb,' pdbref=',pdbref
204
205 C Read sequence if not taken from the pdb file.
206       if (iscode.gt.0) then
207         read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
208       else
209         read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
210       endif
211 C Convert sequence to numeric code
212       do i=1,nres
213         itype(i)=rescode(i,sequence(i),iscode)
214       enddo
215       print *,nres
216       print '(20i4)',(itype(i),i=1,nres)
217
218       do i=1,nres
219 #ifdef PROCOR
220         if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
221 #else
222         if (itype(i).eq.ntyp1) then
223 #endif
224           itel(i)=0
225 #ifdef PROCOR
226         else if (iabs(itype(i+1)).ne.20) then
227 #else
228         else if (iabs(itype(i)).ne.20) then
229 #endif
230           itel(i)=1
231         else
232           itel(i)=2
233         endif
234       enddo
235       write (iout,*) "ITEL"
236       do i=1,nres-1
237         write (iout,*) i,itype(i),itel(i)
238       enddo
239
240       print *,'Call Read_Bridge.'
241       call read_bridge
242
243       if (with_dihed_constr) then
244
245       read (inp,*) ndih_constr
246       write (iout,*) "ndih_constr",ndih_constr
247       if (ndih_constr.gt.0) then
248         read (inp,*) ftors
249         write (iout,*) 'FTORS',ftors
250         read (inp,*) (idih_constr(i),phi0(i),drange(i),i=1,ndih_constr)
251         write (iout,*)
252      &   'There are',ndih_constr,' constraints on phi angles.'
253         do i=1,ndih_constr
254           write (iout,'(i5,2f8.3)') idih_constr(i),phi0(i),drange(i)
255         enddo
256         do i=1,ndih_constr
257           phi0(i)=deg2rad*phi0(i)
258           drange(i)=deg2rad*drange(i)
259         enddo
260       endif
261
262       endif
263
264       nnt=1
265       nct=nres
266       print *,'NNT=',NNT,' NCT=',NCT
267       if (itype(1).eq.ntyp1) nnt=2
268       if (itype(nres).eq.ntyp1) nct=nct-1
269       if (nstart.lt.nnt) nstart=nnt
270       if (nend.gt.nct .or. nend.eq.0) nend=nct
271       write (iout,*) "nstart",nstart," nend",nend
272       nres0=nres
273 c      if (pdbref) then
274 c        read(inp,'(a)') pdbfile
275 c        write (iout,'(2a)') 'PDB data will be read from file ',pdbfile
276 c        open(ipdbin,file=pdbfile,status='old',err=33)
277 c        goto 34 
278 c  33    write (iout,'(a)') 'Error opening PDB file.'
279 c        stop
280 c  34    continue
281 c        print *,'Begin reading pdb data'
282 c        call readpdb
283 c        print *,'Finished reading pdb data'
284 c        write (iout,'(a,i3,a,i3)')'nsup=',nsup,' nstart_sup=',nstart_sup
285 c        do i=1,nres
286 c          itype_pdb(i)=itype(i)
287 c        enddo
288 c        close (ipdbin)
289 c        write (iout,'(a,i3)') 'nsup=',nsup
290 c        nstart_seq=nnt
291 c        if (nsup.le.(nct-nnt+1)) then
292 c          do i=0,nct-nnt+1-nsup
293 c            if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),nsup)) then
294 c              nstart_seq=nnt+i
295 c              goto 111
296 c            endif
297 c          enddo
298 c          write (iout,'(a)') 
299 c     &            'Error - sequences to be superposed do not match.'
300 c          stop
301 c        else
302 c          do i=0,nsup-(nct-nnt+1)
303 c            if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),nct-nnt+1)) 
304 c     &      then
305 c              nstart_sup=nstart_sup+i
306 c              nsup=nct-nnt+1
307 c              goto 111
308 c            endif
309 c          enddo 
310 c          write (iout,'(a)') 
311 c     &            'Error - sequences to be superposed do not match.'
312 c        endif
313 c  111   continue
314 c        write (iout,*) 'nsup=',nsup,' nstart_sup=',nstart_sup,
315 c     &                 ' nstart_seq=',nstart_seq
316 c      endif
317       call init_int_table
318       call setup_var
319       write (iout,*) "molread: REFSTR",refstr
320       if (refstr) then
321         if (.not.pdbref) then
322           call read_angles(inp,*38)
323           goto 39
324    38     write (iout,'(a)') 'Error reading reference structure.'
325 #ifdef MPL
326           call mp_stopall(Error_Msg)
327 #else
328           stop 'Error reading reference structure'
329 #endif
330    39     call chainbuild     
331           nstart_sup=nnt
332           nstart_seq=nnt
333           nsup=nct-nnt+1
334           kkk=1
335           do i=1,2*nres
336             do j=1,3
337               cref(j,i,kkk)=c(j,i)
338             enddo
339           enddo
340         endif
341         call contact(.true.,ncont_ref,icont_ref)
342       endif
343       return
344       end
345 c-----------------------------------------------------------------------------
346       logical function seq_comp(itypea,itypeb,length)
347       implicit none
348       integer length,itypea(length),itypeb(length)
349       integer i
350       do i=1,length
351         if (itypea(i).ne.itypeb(i)) then
352           seq_comp=.false.
353           return
354         endif
355       enddo
356       seq_comp=.true.
357       return
358       end
359 c-----------------------------------------------------------------------------
360       subroutine read_bridge
361 C Read information about disulfide bridges.
362       implicit none
363       include 'DIMENSIONS'
364       include 'COMMON.IOUNITS'
365       include 'COMMON.GEO'
366       include 'COMMON.VAR'
367       include 'COMMON.INTERACT'
368       include 'COMMON.LOCAL'
369       include 'COMMON.NAMES'
370       include 'COMMON.CHAIN'
371       include 'COMMON.FFIELD'
372       include 'COMMON.SBRIDGE'
373       include 'COMMON.HEADER'
374       include 'COMMON.CONTROL'
375       include 'COMMON.TIME1'
376 #ifdef MPL
377       include 'COMMON.INFO'
378 #endif
379       integer i,j
380 C Read bridging residues.
381       read (inp,*) ns,(iss(i),i=1,ns)
382       print *,'ns=',ns
383 C Check whether the specified bridging residues are cystines.
384       do i=1,ns
385         if (itype(iss(i)).ne.1) then
386           write (iout,'(2a,i3,a)') 
387      &   'Do you REALLY think that the residue ',restyp(iss(i)),i,
388      &   ' can form a disulfide bridge?!!!'
389           write (*,'(2a,i3,a)') 
390      &   'Do you REALLY think that the residue ',restyp(iss(i)),i,
391      &   ' can form a disulfide bridge?!!!'
392 #ifdef MPL
393          call mp_stopall(error_msg)
394 #else
395          stop
396 #endif
397         endif
398       enddo
399 C Read preformed bridges.
400       if (ns.gt.0) then
401       read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
402       if (nss.gt.0) then
403         nhpb=nss
404 C Check if the residues involved in bridges are in the specified list of
405 C bridging residues.
406         do i=1,nss
407           do j=1,i-1
408             if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
409      &      .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
410               write (iout,'(a,i3,a)') 'Disulfide pair',i,
411      &      ' contains residues present in other pairs.'
412               write (*,'(a,i3,a)') 'Disulfide pair',i,
413      &      ' contains residues present in other pairs.'
414 #ifdef MPL
415               call mp_stopall(error_msg)
416 #else
417               stop 
418 #endif
419             endif
420           enddo
421           do j=1,ns
422             if (ihpb(i).eq.iss(j)) goto 10
423           enddo
424           write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
425    10     continue
426           do j=1,ns
427             if (jhpb(i).eq.iss(j)) goto 20
428           enddo
429           write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
430    20     continue
431           dhpb(i)=dbr
432           forcon(i)=fbr
433         enddo
434         do i=1,nss
435           ihpb(i)=ihpb(i)+nres
436           jhpb(i)=jhpb(i)+nres
437         enddo
438       endif
439       endif
440       return
441       end
442 c----------------------------------------------------------------------------
443       subroutine read_angles(kanal,*)
444       implicit none
445       include 'DIMENSIONS'
446       include 'COMMON.GEO'
447       include 'COMMON.VAR'
448       include 'COMMON.CHAIN'
449       include 'COMMON.IOUNITS'
450       integer i,kanal
451       read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
452       read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
453       read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
454       read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
455       do i=1,nres
456         theta(i)=deg2rad*theta(i)
457         phi(i)=deg2rad*phi(i)
458         alph(i)=deg2rad*alph(i)
459         omeg(i)=deg2rad*omeg(i)
460       enddo
461       return
462    10 return1
463       end
464 c----------------------------------------------------------------------------
465       subroutine reada(rekord,lancuch,wartosc,default)
466       implicit none
467       character*(*) rekord,lancuch
468       double precision wartosc,default
469       integer ilen,iread
470       external ilen
471       iread=index(rekord,lancuch)
472       if (iread.eq.0) then
473         wartosc=default 
474         return
475       endif   
476       iread=iread+ilen(lancuch)+1
477       read (rekord(iread:),*) wartosc
478       return
479       end
480 c----------------------------------------------------------------------------
481       subroutine multreada(rekord,lancuch,tablica,dim,default)
482       implicit none
483       integer dim,i
484       double precision tablica(dim),default
485       character*(*) rekord,lancuch
486       integer ilen,iread
487       external ilen
488       do i=1,dim
489         tablica(i)=default 
490       enddo
491       iread=index(rekord,lancuch)
492       if (iread.eq.0) return
493       iread=iread+ilen(lancuch)+1
494       read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
495    10 return
496       end
497 c----------------------------------------------------------------------------
498       subroutine readi(rekord,lancuch,wartosc,default)
499       implicit none
500       character*(*) rekord,lancuch
501       integer wartosc,default
502       integer ilen,iread
503       external ilen
504       iread=index(rekord,lancuch)
505       if (iread.eq.0) then
506         wartosc=default 
507         return
508       endif   
509       iread=iread+ilen(lancuch)+1
510       read (rekord(iread:),*) wartosc
511       return
512       end
513 c----------------------------------------------------------------------------
514       subroutine card_concat(card)
515       include 'DIMENSIONS'
516       include 'COMMON.IOUNITS'
517       character*(*) card
518       character*80 karta,ucase
519       external ilen
520       read (inp,'(a)') karta
521       karta=ucase(karta)
522       card=' '
523       do while (karta(80:80).eq.'&')
524         card=card(:ilen(card)+1)//karta(:79)
525         read (inp,'(a)') karta
526         karta=ucase(karta)
527       enddo
528       card=card(:ilen(card)+1)//karta
529       return
530       end
531 c----------------------------------------------------------------------------
532       subroutine openunits
533       implicit none
534       include 'DIMENSIONS'    
535 #ifdef MPI
536       include "mpif.h"
537       character*3 liczba
538       include "COMMON.MPI"
539 #endif
540       include 'COMMON.IOUNITS'
541       include 'COMMON.CONTROL'
542       integer lenpre,lenpot,ilen
543       external ilen
544       character*16 cformat,cprint
545       character*16 ucase
546       integer lenint,lenout
547       call getenv('INPUT',prefix)
548       call getenv('OUTPUT',prefout)
549       call getenv('INTIN',prefintin)
550       call getenv('COORD',cformat)
551       call getenv('PRINTCOOR',cprint)
552       call getenv('SCRATCHDIR',scratchdir)
553       from_bx=.true.
554       from_cx=.false.
555       if (index(ucase(cformat),'CX').gt.0) then
556         from_cx=.true.
557         from_bx=.false.
558       endif
559       from_cart=.true.
560       lenpre=ilen(prefix)
561       lenout=ilen(prefout)
562       lenint=ilen(prefintin)
563 C Get the names and open the input files
564       open (inp,file=prefix(:ilen(prefix))//'.inp',status='old')
565 #ifdef MPI
566       write (liczba,'(bz,i3.3)') me
567       outname=prefout(:lenout)//'_clust.out_'//liczba
568 #else
569       outname=prefout(:lenout)//'_clust.out'
570 #endif
571       if (from_bx) then
572         intinname=prefintin(:lenint)//'.bx'
573       else if (from_cx) then
574         intinname=prefintin(:lenint)//'.cx'
575       else
576         intinname=prefintin(:lenint)//'.int'
577       endif
578       rmsname=prefintin(:lenint)//'.rms'
579       open (jplot,file=prefout(:ilen(prefout))//'.tex',
580      &       status='unknown')
581       open (jrms,file=rmsname,status='unknown')
582       open(iout,file=outname,status='unknown')
583 C Get parameter filenames and open the parameter files.
584       call getenv('BONDPAR',bondname)
585       open (ibond,file=bondname,status='old')
586       call getenv('THETPAR',thetname)
587       open (ithep,file=thetname,status='old')
588       call getenv('ROTPAR',rotname)
589       open (irotam,file=rotname,status='old')
590       call getenv('TORPAR',torname)
591       open (itorp,file=torname,status='old')
592       call getenv('TORDPAR',tordname)
593       open (itordp,file=tordname,status='old')
594       call getenv('FOURIER',fouriername)
595       open (ifourier,file=fouriername,status='old')
596       call getenv('ELEPAR',elename)
597       open (ielep,file=elename,status='old')
598       call getenv('SIDEPAR',sidename)
599       open (isidep,file=sidename,status='old')
600       call getenv('SIDEP',sidepname)
601       open (isidep1,file=sidepname,status="old")
602       call getenv('SCCORPAR',sccorname)
603       open (isccor,file=sccorname,status="old")
604 #ifndef OLDSCP
605 C
606 C 8/9/01 In the newest version SCp interaction constants are read from a file
607 C Use -DOLDSCP to use hard-coded constants instead.
608 C
609       call getenv('SCPPAR',scpname)
610       open (iscpp,file=scpname,status='old')
611 #endif
612       return
613       end