C********************************************************************** C PROGRAM TO CONVERT FROM EASY TYPING TO mylaiplain CHARACTERS - ACS* C********************************************************************** CHARACTER*1 FILE1*12,FILE2*12,DUM COMMON FILE1,FILE2 1 WRITE(*,*)' PLEASE TYPE THE INPUT FILE NAME:' READ(*,'(A12)')FILE1 OPEN(UNIT=1,FILE=FILE1,STATUS='OLD',ERR=10) GOTO 11 10 WRITE(*,*)' FILE NOT FOUND???' GOTO 1 11 CONTINUE 2 WRITE(*,*)' PLEASE TYPE OUTPUT FILE NAME:' READ(*,'(A12)')FILE2 OPEN(UNIT=2,FILE=FILE2,STATUS='NEW',ERR=12) GOTO 13 12 WRITE(*,*)' FILE ALREADY EXISTS!!! REPLACE? [Y/(N)]:' READ(*,'(A1)')DUM IF(DUM.NE.'Y'.AND.DUM.NE.'y') GOTO 2 OPEN(UNIT=2,FILE=FILE2,STATUS='OLD') 13 CONTINUE CALL TRANS1 STOP END C********************************************************************** c routine to convert single/multiple characters for each TAMIL vowel c and consonant to single code. Totally 12 vowels, 18+4 consonants, c 10 numbers and 12 characters are used/allowed. SUBROUTINE TRANS1 CHARACTER*1 FILE1*12,FILE2*12,A(80),B(80) COMMON FILE1,FILE2 OPEN(UNIT=1,FILE=FILE1,STATUS='OLD') C OPEN(UNIT=3,FILE='DUMDUM.DUM',STATUS='UNKNOWN') c here starts the reading (line by line) 100 READ(1,1000,END=2000)(A(I),I=1,80) 1000 FORMAT(80A1) c this do-loop finds the length of the line DO 110 J=80,1,-1 IF(A(J).NE.CHAR(0).AND.A(J).NE.' ') THEN MAX=J GOTO 120 ELSE ENDIF 110 CONTINUE c this do-loop terminates character analysis for blank lines DO 111 I=1,MAX IF(A(I).NE.' ') GOTO 120 C WRITE(3,'(A1)')' ' WRITE(2,'(A1)')' ' GOTO 100 111 CONTINUE c this do-loop converts small to capital letters (to save code lines) 120 CONTINUE DO 130 I=1,MAX DO 130 J=97,122 IF(A(I).EQ.CHAR(J)) A(I)=CHAR(J-32) 130 CONTINUE c this do-loop converts B & D to T & P (to save code lines) c also makes it converts AU to OU (making these equal) DO 140 I=1,MAX IF(A(I).EQ.'D') A(I)='T' IF(A(I).EQ.'B') A(I)='P' IF(A(I).EQ.'A'.AND.A(I+1).EQ.'U') A(I)='O' 140 CONTINUE J=1 N=1 c this do-loop converts typed characters to single CODEs c which are converted to the MYLAI characters in next routine c (it is done one line at a time) 141 CONTINUE IF(J.GT.MAX) GOTO 202 IF(A(J).EQ.'0') B(N)='0' IF(A(J).EQ.'1') B(N)='1' IF(A(J).EQ.'2') B(N)='2' IF(A(J).EQ.'3') B(N)='3' IF(A(J).EQ.'4') B(N)='4' IF(A(J).EQ.'5') B(N)='5' IF(A(J).EQ.'6') B(N)='6' IF(A(J).EQ.'7') B(N)='7' IF(A(J).EQ.'8') B(N)='8' IF(A(J).EQ.'9') B(N)='9' IF(A(J).EQ.' ') B(N)=' ' IF(A(J).EQ.'%') B(N)='%' IF(A(J).EQ.'&') B(N)='&' IF(A(J).EQ.'(') B(N)='(' IF(A(J).EQ.')') B(N)=')' IF(A(J).EQ.'-') B(N)='-' IF(A(J).EQ.'+') B(N)='+' IF(A(J).EQ.'=') B(N)='=' IF(A(J).EQ.'|') B(N)='|' IF(A(J).EQ.',') B(N)=',' IF(A(J).EQ.'.') B(N)='.' IF(A(J).EQ.'/') B(N)='/' IF(A(J).EQ.'?') B(N)='?' C CHARACTER-DEFINITIONS-BEGIN: small letters for vowel IF(A(J).EQ.'A') B(N)='a' IF(A(J).EQ.'I') B(N)='c' IF(A(J).EQ.'E') B(N)='g' IF(A(J).EQ.'U') B(N)='e' IF(A(J).EQ.'O') B(N)='j' IF(A(J).EQ.'K') B(N)='A' IF(A(J).EQ.'T') B(N)='C' IF(A(J).EQ.'P') B(N)='E' IF(A(J).EQ.'N') B(N)='J' IF(A(J).EQ.'M') B(N)='K' IF(A(J).EQ.'Y') B(N)='M' IF(A(J).EQ.'R') B(N)='N' IF(A(J).EQ.'L') B(N)='O' IF(A(J).EQ.'V') B(N)='P' IF(A(J).EQ.'S') B(N)='S' IF(A(J).EQ.'J') B(N)='T' IF(A(J).EQ.'H') B(N)='V' IF(A(J).EQ.'A'.AND.A(J+1).EQ.'A') B(N)='b' IF(A(J).EQ.'E'.AND.A(J+1).EQ.'E') B(N)='d' IF(A(J).EQ.'O'.AND.A(J+1).EQ.'O') B(N)='f' IF(A(J).EQ.'E'.AND.A(J+1).EQ.'1') B(N)='h' IF(A(J).EQ.'A'.AND.A(J+1).EQ.'I') B(N)='i' IF(A(J).EQ.'O'.AND.A(J+1).EQ.'1') B(N)='k' IF(A(J).EQ.'O'.AND.A(J+1).EQ.'U') B(N)='l' IF(A(J).EQ.'C'.AND.A(J+1).EQ.'H') B(N)='B' IF(A(J).EQ.'T'.AND.A(J+1).EQ.'H') B(N)='D' IF(A(J).EQ.'R'.AND.A(J+1).EQ.'1') B(N)='F' IF(A(J).EQ.'N'.AND.A(J+1).EQ.'G') B(N)='G' IF(A(J).EQ.'G'.AND.A(J+1).EQ.'N') B(N)='H' IF(A(J).EQ.'N'.AND.A(J+1).EQ.'1') B(N)='I' IF(A(J).EQ.'N'.AND.A(J+1).EQ.'2') B(N)='L' IF(A(J).EQ.'L'.AND.A(J+1).EQ.'2') B(N)='Q' IF(A(J).EQ.'Z'.AND.A(J+1).EQ.'H') B(N)='Q' IF(A(J).EQ.'L'.AND.A(J+1).EQ.'1') B(N)='R' IF(A(J).EQ.'S'.AND.A(J+1).EQ.'H') B(N)='U' IF(A(J).EQ.'N'.AND.A(J+1).EQ.'J') B(N)='H' IF(A(J).EQ.'N'.AND.A(J+1).EQ.' '.AND.A(J-1).NE.' ') B(N)='I' C ADDING IF(A(J).EQ.'A'.AND.A(J+1).EQ.'A') J=J+1 IF(A(J).EQ.'E'.AND.A(J+1).EQ.'E') J=J+1 IF(A(J).EQ.'E'.AND.A(J+1).EQ.'1') J=J+1 IF(A(J).EQ.'A'.AND.A(J+1).EQ.'I') J=J+1 IF(A(J).EQ.'O'.AND.A(J+1).EQ.'O') J=J+1 IF(A(J).EQ.'O'.AND.A(J+1).EQ.'1') J=J+1 IF(A(J).EQ.'O'.AND.A(J+1).EQ.'U') J=J+1 IF(A(J).EQ.'C'.AND.A(J+1).EQ.'H') J=J+1 IF(A(J).EQ.'T'.AND.A(J+1).EQ.'H') J=J+1 IF(A(J).EQ.'R'.AND.A(J+1).EQ.'1') J=J+1 IF(A(J).EQ.'L'.AND.A(J+1).EQ.'1') J=J+1 IF(A(J).EQ.'L'.AND.A(J+1).EQ.'2') J=J+1 IF(A(J).EQ.'N'.AND.A(J+1).EQ.'G') J=J+1 IF(A(J).EQ.'G'.AND.A(J+1).EQ.'N') J=J+1 IF(A(J).EQ.'N'.AND.A(J+1).EQ.'2') J=J+1 IF(A(J).EQ.'N'.AND.A(J+1).EQ.'1') J=J+1 IF(A(J).EQ.'N'.AND.A(J+1).EQ.'J') J=J+1 IF(A(J).EQ.'S'.AND.A(J+1).EQ.'H') J=J+1 IF(A(J).EQ.'Z'.AND.A(J+1).EQ.'H') J=J+1 C CHARACTER-DEFINITIONS-END J=J+1 N=N+1 GOTO 141 200 CONTINUE 202 CONTINUE MAX1=N-1 CALL TRANS2(B,MAX1) C WRITE(3,1000)(B(I),I=1,MAX1) c this do-loop empties the earlier CODEs (for each line) DO 300 I=1,MAX1 B(I)=CHAR(0) 300 CONTINUE GOTO 100 2000 RETURN END C********************************************************************** c routine to convert the single letter code to proper Tamil letters c as identifiable by MYLAIplain font in WinWord. SUBROUTINE TRANS2(B,MAX1) CHARACTER*1 FILE1*12,FILE2*12,B(80),C(130),A1(57),C1(34) COMMON FILE1,FILE2 OPEN(UNIT=2,FILE=FILE2,STATUS='UNKNOWN') A1(1)='a' A1(2)='b' A1(3)='c' A1(4)='d' A1(5)='e' A1(6)='f' A1(7)='g' A1(8)='h' A1(9)='i' A1(10)='j' A1(11)='k' A1(12)='l' A1(13)='A' A1(14)='B' A1(15)='C' A1(16)='D' A1(17)='E' A1(18)='F' A1(19)='G' A1(20)='H' A1(21)='I' A1(22)='J' A1(23)='K' A1(24)='L' A1(25)='M' A1(26)='N' A1(27)='O' A1(28)='P' A1(29)='Q' A1(30)='R' A1(31)='S' A1(32)='T' A1(33)='U' A1(34)='V' A1(35)='0' A1(36)='1' A1(37)='2' A1(38)='3' A1(39)='4' A1(40)='5' A1(41)='6' A1(42)='7' A1(43)='8' A1(44)='9' A1(45)=' ' A1(46)='%' A1(47)='&' A1(48)='(' A1(49)=')' A1(50)='-' A1(51)='+' A1(52)='=' A1(53)='|' A1(54)=',' A1(55)='.' A1(56)='/' A1(57)='?' C1(1)='`' C1(2)='~' C1(3)=';' C1(4)=':' C1(5)='u' C1(6)='U' C1(7)=CHAR(39) C1(8)='"' C1(9)='_' C1(10)='o' C1(11)='O' C1(12)=' ' C1(13)='k' C1(14)='c' C1(15)='d' C1(16)='t' C1(17)='p' C1(18)='b' C1(19)='g' C1(20)='w' C1(21)='[' C1(22)='n' C1(23)='m' C1(24)=']' C1(25)='y' C1(26)='r' C1(27)='l' C1(28)='v' C1(29)='z' C1(30)='q' C1(31)='s' C1(32)='j' C1(33)='x' C1(34)='h' MAX2=0 I=0 N=1 199 CONTINUE I=I+1 IF(I.GT.MAX1) GOTO 2000 IF(B(I).EQ.' ') THEN C(N)=' ' N=N+1 GOTO 199 ELSE ENDIF IF(I.EQ.1.OR.B(I-1).EQ.' ') THEN DO 201 J=1,11 IF(B(I).EQ.A1(J)) THEN C(N)=C1(J) N=N+1 GOTO 199 ELSE ENDIF 201 CONTINUE IF(B(I).EQ.A1(12)) THEN C(N)='o' C(N+1)='q' N=N+2 GOTO 199 ELSE ENDIF ELSE ENDIF DO 300 J=13,34 IF(B(I).EQ.A1(J)) THEN C(N)=C1(J) N=N+1 DO 301 K=13,57 IF(B(I+1).EQ.A1(K).OR.I.EQ.MAX1) THEN C(N)='f' N=N+1 GOTO 199 ELSE ENDIF 301 CONTINUE ELSE ENDIF 300 CONTINUE DO 400 J=13,34 IF(B(I).EQ.A1(J).AND.C(N-1).NE.'f') THEN IF(B(I+1).EQ.'b') THEN IF(B(I).EQ.'I'.OR.B(I).EQ.'L'.OR.B(I).EQ.'F') THEN IF(B(I).EQ.'I') C(N-1)=CHAR(0167) IF(B(I).EQ.'L') C(N-1)=CHAR(0177) IF(B(I).EQ.'F') C(N-1)='$' N=N-1 ELSE C(N)='a' ENDIF ELSE ENDIF IF(B(I+1).EQ.'c'.AND.B(I).NE.'C') C(N)='i' IF(B(I+1).EQ.'d'.AND.B(I).NE.'C') C(N)='I' IF(B(I+1).EQ.'e') THEN IF(B(I).EQ.'A') C(N-1)='K' IF(B(I).EQ.'B') C(N-1)='C' IF(B(I).EQ.'H') C(N-1)='W' IF(B(I).EQ.'C') C(N-1)='D' IF(B(I).EQ.'L') C(N-1)='}' IF(B(I).EQ.'D') C(N-1)='T' IF(B(I).EQ.'J') C(N-1)='N' IF(B(I).EQ.'K') C(N-1)='M' IF(B(I).EQ.'F') C(N-1)='B' IF(B(I).EQ.'I') C(N-1)='{' IF(B(I).EQ.'N') C(N-1)='R' IF(B(I).EQ.'O') C(N-1)='L' IF(B(I).EQ.'Q') C(N-1)='Z' IF(B(I).EQ.'R') C(N-1)='Q' ELSE ENDIF IF(B(I+1).EQ.'e') THEN IF(B(I).EQ.'S'.OR.B(I).EQ.'T'.OR.B(I).EQ.'U'.OR.B(I).EQ.'V') 1 THEN IF(B(I).EQ.'S') C(N-1)='s' IF(B(I).EQ.'T') C(N-1)='j' IF(B(I).EQ.'U') C(N-1)='x' IF(B(I).EQ.'V') C(N-1)='h' C(N)='H' N=N+1 GOTO 199 ELSE IF(B(I).EQ.'G'.OR.B(I).EQ.'E'.OR.B(I).EQ.'M'.OR.B(I).EQ.'P') 1 THEN IF(B(I).EQ.'G') C(N-1)='g' IF(B(I).EQ.'E') C(N-1)='p' IF(B(I).EQ.'M') C(N-1)='y' IF(B(I).EQ.'P') C(N-1)='v' C(N)='<' N=N+1 GOTO 199 ELSE ENDIF ENDIF ELSE ENDIF C BEGINNING OF VOWEL 'OO'. MOST DIFFICULT ONE IF(B(I+1).EQ.'f') THEN IF(B(I).EQ.'A'.OR.B(I).EQ.'B') THEN IF(B(I).EQ.'A') C(N-1)='P' IF(B(I).EQ.'B') C(N-1)='V' GOTO 199 ELSE IF(B(I).EQ.'H'.OR.B(I).EQ.'L'.OR.B(I).EQ.'D'.OR.B(I).EQ.'J'.OR. 1B(I).EQ.'F'.OR.B(I).EQ.'I'.OR.B(I).EQ.'O') THEN IF(C(N-1).EQ.'w') C(N-1)='W' IF(C(N-1).EQ.']') C(N-1)='}' IF(C(N-1).EQ.'t') C(N-1)='T' IF(C(N-1).EQ.'n') C(N-1)='N' IF(C(N-1).EQ.'b') C(N-1)='B' IF(C(N-1).EQ.'[') C(N-1)='{' IF(C(N-1).EQ.'l') C(N-1)='L' C(N)='\' N=N+1 GOTO 199 ELSE ENDIF IF(B(I).EQ.'C'.OR.B(I).EQ.'K'.OR.B(I).EQ.'N'.OR.B(I).EQ.'Q'.OR. 1B(I).EQ.'R') THEN IF(B(I).EQ.'C') C(N-1)='D' IF(B(I).EQ.'K') C(N-1)='M' IF(B(I).EQ.'N') C(N-1)='R' IF(B(I).EQ.'Q') C(N-1)='Z' IF(B(I).EQ.'R') C(N-1)='Q' C(N)=C(N-1) C(N-1)='Y' N=N+1 ELSE ENDIF IF(B(I).EQ.'V'.OR.B(I).EQ.'T'.OR.B(I).EQ.'S'.OR.B(I).EQ.'U') 1THEN C(N)='J' IF(B(I).EQ.'S') C(N-1)='s' IF(B(I).EQ.'T') C(N-1)='j' IF(B(I).EQ.'U') C(N-1)='x' IF(B(I).EQ.'V') C(N-1)='h' N=N+1 ELSE ENDIF IF(B(I).EQ.'G'.OR.B(I).EQ.'E'.OR.B(I).EQ.'M'.OR.B(I).EQ.'P') 1THEN C(N)='>' IF(B(I).EQ.'G') C(N-1)='g' IF(B(I).EQ.'E') C(N-1)='p' IF(B(I).EQ.'M') C(N-1)='y' IF(B(I).EQ.'P') C(N-1)='v' N=N+1 ELSE ENDIF ENDIF ELSE ENDIF C END OF VOWEL 'OO'. MOST DIFFICULT ONE IF(B(I+1).EQ.'g') THEN C(N)=C(N-1) C(N-1)='e' N=N+1 ELSE ENDIF IF(B(I+1).EQ.'h') THEN C(N)=C(N-1) C(N-1)='E' N=N+1 ELSE ENDIF IF(B(I+1).EQ.'i') THEN C(N)=C(N-1) C(N-1)='A' IF(B(I).EQ.'L'.AND.B(I+1).EQ.'i') C(N-1)='^' IF(B(I).EQ.'I'.AND.B(I+1).EQ.'i') C(N-1)='^' IF(B(I).EQ.'O'.AND.B(I+1).EQ.'i') C(N-1)='^' IF(B(I).EQ.'R'.AND.B(I+1).EQ.'i') C(N-1)='^' N=N+1 ELSE ENDIF IF(B(I+1).EQ.'j') THEN C(N)=C(N-1) C(N-1)='e' C(N+1)='a' N=N+2 ELSE ENDIF IF(B(I+1).EQ.'k') THEN C(N)=C(N-1) C(N-1)='E' C(N+1)='a' N=N+2 ELSE ENDIF IF(B(I+1).EQ.'l') THEN C(N)=C(N-1) C(N-1)='e' C(N+1)='q' N=N+2 ELSE ENDIF N=N+1 GOTO 199 ELSE ENDIF IF(B(I+1).EQ.'c'.AND.B(I).EQ.'C') C(N-1)='F' IF(B(I+1).EQ.'d'.AND.B(I).EQ.'C') C(N-1)='G' 400 CONTINUE C CHARACTER TRANFER DO 500 L=35,57 IF(B(I).EQ.A1(L)) THEN C(N)=A1(L) N=N+1 ELSE ENDIF 500 CONTINUE GOTO 199 2000 CONTINUE MAX2=N C N=1 WRITE(2,'(130A1)')(C(I),I=1,MAX2) DO 600 I=1,MAX2 C(I)=CHAR(0) 600 CONTINUE RETURN END C**********************************************************************