character line*120,coded*120,lkey*26 integer key(26),ikey(26),ncase(26) do 49 i=1,120 coded(i:i)=' ' line(i:i)=' ' 49 continue do 53 i=1,26 ncase(i)=0 53 continue write (*,*)'This programme reads the key from the' & //' file MonoAlph.key' open(8,file='MonoAlph.key',form='formatted') read(8,*)lkey do 46 i=1,26 nl=ichar(lkey(i:i)) if(nl.ge.97)then nl=nl-32 ncase(i)=1 end if c write(*,*)"*** ",i,nl,nl-64,ncase(i) key(i)=nl 46 continue 48 write(*,*)'Do you want to (1) encode or (2) decode?' read(*,*)icode if(icode.ne.1.and.icode.ne.2)go to 48 if(icode.eq.2)then do 47 i=1,26 ikey(key(i)-64)=i+64 c write(*,*)ncase(i),lkey(i:i),key(i),ikey(i) 47 continue end if 45 write(*,*)'Do you want (1) UPPER CASE or (2) lower case' & //' or (3) mixed according to the key for encoding?' read(*,*)icase if(icase.lt.1.or.icase.gt.3)go to 45 open(8,file="MonoAlph.txt",form="formatted") 1 read(8,1000,end=2)line 1000 format(a120) do 15 i=1,120 nl=ichar(line(i:i)) if(nl.ge.97.and.nl.le.122)then nl=nl-32 end if nlo = nl if(nl.ge.65.and.nl.le.90)then if(icode.eq.1)nlo=key(nl-64) if(icode.eq.2)nlo=ikey(nl-64) if(icase.eq.2)nlo=nl+32 if(icase.eq.3.and.icode.eq.1)nlo=nlo+32*ncase(nl-64) end if if(nl.lt.32)nlo=32 coded(i:i)=char(nlo) 15 continue write(*,1000)coded go to 1 2 close(8) stop end