!********************************************************************************* !* Decode a text in morse * !* ----------------------------------------------------------------------------- * !* SAMPLE RUN: * !* File morse.dat contains: * !*- .--- . ...-.- ... ..- .. ... ...-.- -.-. --- -. - . -. - ...-.- -.. . ...-.- * !*- ...- --- ..- ... ...-.- ...- --- .. .-. -.-.- ...-.- * !*- .--- . .- -. -....- .--. .. . .-. .-. . ...-.- -- --- .-. . .- ..- ...-.- * !*...--- * !* * !* Screen output: * !*- .--- . ...-.- ... ..- .. ... ...-.- -.-. --- -. - . -. - ...-.- -.. . ...-.- * !* je suis content de * !*- ...- --- ..- ... ...-.- ...- --- .. .-. -.-.- ...-.- * !* vous voir. * !*- .--- . .- -. -....- .--. .. . .-. .-. . ...-.- -- --- .-. . .- ..- ...-.- * !* jean-pierre moreau * !*...--- * !* * !* * !* Program terminated. * !* * !* F90 Release By Jean-Pierre Moreau, Paris. * !* (www.jpmoreau.fr) * !********************************************************************************* !Note: each morse line must begin with - and end with ...-.- Program Decode_Morse character*6 morse(0:45) character*1 alpha(0:45) character*80 ligne !one input morse line character*80 decodee !one output translated line character*6 mot !one morse letter integer count ! initialize table of morse signs morse(0)='.' morse(1)='-' morse(2)='..' morse(3)='.-' morse(4)='-.' morse(5)='--' morse(6)='...' morse(7)='..-' morse(8)='.-.' morse(9)='.--' morse(10)='-..' morse(11)='--.' morse(12)='-.-' morse(13)='---' morse(14)='....' morse(15)='...-' morse(16)='..-.' morse(17)='.-..' morse(18)='.-.-' morse(19)='.--.' morse(20)='..--' morse(21)='.---' morse(22)='-...' morse(23)='-.-.' morse(24)='-..-' morse(25)='--..' morse(26)='---.' morse(27)='--.-' morse(28)='-.--' morse(29)='.----' morse(30)='..---' morse(31)='...--' morse(32)='....-' morse(33)='.....' morse(34)='-....' morse(35)='--...' morse(36)='---..' morse(37)='----.' morse(38)='-----' morse(39)='-.-.-' morse(40)='--..--' morse(41)='---...' morse(42)='-....-' morse(43)='--..--' morse(44)='...-.-' morse(45)=ACHAR(13) ! initialize table of alphanumeric characters alpha(0)='e' alpha(1)='t' alpha(2)='i' alpha(3)='a' alpha(4)='n' alpha(5)='m' alpha(6)='s' alpha(7)='u' alpha(8)='r' alpha(9)='w' alpha(10)='d' alpha(11)='g' alpha(12)='k' alpha(13)='o' alpha(14)='h' alpha(15)='v' alpha(16)='f' alpha(17)='l' alpha(18)='*' alpha(19)='p' alpha(20)='*' alpha(21)='j' alpha(22)='b' alpha(23)='c' alpha(24)='x' alpha(25)='z' alpha(26)='*' alpha(27)='q' alpha(28)='y' alpha(29)='1' alpha(30)='2' alpha(31)='3' alpha(32)='4' alpha(33)='5' alpha(34)='6' alpha(35)='7' alpha(36)='8' alpha(37)='9' alpha(38)='0' alpha(39)='.' alpha(40)=',' alpha(41)=':' alpha(42)='-' alpha(43)='?' alpha(44)=' ' alpha(45)=ACHAR(13) open(unit=1,file='morse.dat',action='read') 10 decodee='' read (1,50,end=20) ligne print *, ligne jj=0; count=0; mot='' do i=1, LEN_TRIM(ligne) if (ligne(i:i)=='.'.or.ligne(i:i)=='-') then mot(i-count:i-count)=ligne(i:i) else count=i if(mot=='...---') goto 20 do j=0, 45 if (mot==morse(j)) then decodee(jj:jj)=alpha(j) jj=jj+1 end if end do mot='' end if end do print *, decodee goto 10 20 close(unit=1) print *,'Program terminated.' print *,' ' 50 format(A80) End !end of file morse.f90 ! ! j e s u i s c o n t e n t d e !- .--- . ...-.- ... ..- .. ... ...-.- -.-. --- -. - . -. - ...-.- -.. . ...-.- ! v o u s v o i r . !- ...- --- ..- ... ...-.- ...- --- .. .-. -.-.- ...-.- ! j e a n - p i e r r e m o r e a u !- .--- . .- -. -....- .--. .. . .-. .-. . ...-.- -- --- .-. . .- ..- ...-.- !...---