program longer implicit none integer*4 nat,nbonds,istart,ires,n,ia,iover,nat0,i,idum,id2,id3, 1iargc,iq1,ia1,ia2 real*8 b,d,q,t parameter (nat0=100000) integer*4 ind(nat0) character*80 nmol,s80 logical lex write(6,600) 600 format(' Polyproline (ZW) chain generation') if(iargc().eq.0)then write(6,601) 601 format(' Input number of residues :') read(5,*)n else call getarg(1,s80) read(s80,*)n endif nat=14*(n-2)+17+14 write(6,*)nat,' atoms' nbonds=nat-1 write(6,*)nbonds,' nbonds' write(nmol,100)n 100 format(i80) do 1 istart=1,80 1 if(nmol(istart:istart).ne.' ')goto 2 2 open(7,file=nmol(istart:80)//'.mol') write(7,700)nbonds 700 format('Polyproline (zwitterion)',/,I10) open(71,file='start.mol') read(71,*) read(71,*) read(71,*)iq1,q read(71,*)d,b,t write(7,706)iq1,q,d,b,t 706 format(i6,f7.3,/,3f15.6) do 6 ia=1,17 read(71,*) idum,id2,id3,d,b,t,q 6 write(7,701)idum,id2,id3,d,b,t,q close(71) do 3 ires=2,n-1 if(mod(ires,2).eq.0)then ia=(ires-2)*14 open(71,file='even.mol') else ia=(ires-3)*14 open(71,file='odd.mol') endif do 7 i=1,14 read(71,*)ia1,ia2,iq1,d,b,t,q 7 write(7,701)ia+ia1,ia+ia2,iq1,d,b,t,q 701 format(3i6,f10.6,2f10.3,f10.6) 3 close(71) c open(71,file='end.mol') do 8 i=1,13 8 read(71,*)ia1,ia2,iq1,d,b,t,q ia=nat-ia2 rewind 71 do 9 i=1,13 read(71,*)ia1,ia2,iq1,d,b,t,q 9 write(7,701)ia+ia1,ia+ia2,iq1,d,b,t,q close(71) c write(7,702) 702 format('XX') close(7) write(6,*)nmol(istart:80)//'.mol written' if(n.lt.6)stop if(nat.gt.nat0)then write(6,*)'too many atoms' stop endif open(7,file='CCT.INP') write(7,707)n-5 707 format('LDIAGO',/,'t',/,'LOFF ',/,'t',/,'LROA ',/,'t',/, 1 'LRAMAN',/,'t',/,'LVCD ',/,'t',/,'LABS ',/,'t',/, 1 'LNAMES',/,'f',/,'OLDFORM',/,'f',/,'POLYMER',/,i4) do 4 iover=1,n-5 write(7,703)iover 703 format(i4,' overlap') write(7,704)(i,i=1,nat) 704 format(20i6) do 5 i=1,nat 5 ind(i)=0 if(iover.eq.1)then open(8,file='start.cct') read(8,705)(ind(i),i=1,100) close(8) else if(iover.eq.n-5)then open(8,file='last.cct') read(8,705)(ind(i),i=nat-103+1,nat) close(8) else if(mod(iover,2).eq.0)then ia=(iover-2)*14 inquire(file='even.cct',exist=lex) if(lex)then open(8,file='even.cct') read(8,705)(ind(i+ia),i=1,120) close(8) if(iover.gt.2)then ind(ia+7)=ind(ia+6) ind(ia+6)=ind(ia+5) ind(ia+5)=0 endif endif else ia=(iover-3)*14 inquire(file='odd.cct',exist=lex) if(lex)then open(8,file='odd.cct') read(8,705)(ind(i+ia),i=1,120) close(8) endif endif endif endif 4 write(7,705)(ind(i),i=1,nat) 705 format(20i3) close(7) write(6,*)n-5,' overlaps' write(6,*)'CCT.INP written' stop end