DECLARE FUNCTION FixVerb$ (v$)
DECLARE FUNCTION IsVowel! (v$)
DECLARE SUB DoExt (Ext$)
ON ERROR GOTO AResume
DIM SHARED Ext$(1 TO 8)
CLS
LINE INPUT "Output Device>", IO$
OPEN IO$ FOR OUTPUT AS #1
10 LINE INPUT "Verb>", IRVerb$
IF IRVerb$ = "" THEN CLOSE 1: END
IF IsVowel(LEFT$(IRVerb$, 1)) THEN Sep$ = "'" ELSE Sep$ = "e "
LINE INPUT "Meaning>", Meaning$
DoExt RIGHT$(UCASE$(IRVerb$), 2)
Stem$ = LCASE$(LEFT$(IRVerb$, LEN(IRVerb$) - 2))
IF RTRIM$(LTRIM$(Meaning$)) <> "" THEN PRINT #1, UCASE$(LEFT$(IRVerb$, 1)) + LCASE$(RIGHT$(IRVerb$, LEN(IRVerb$) - 1)) + " - " + LCASE$(RTRIM$(LTRIM$(Meaning$)))
PRINT #1, "(1)  Present Indicative               (2)  Negative"
PRINT #1, ""
PRINT #1, "Je " + Stem$ + Ext$(1) + STRING$(38 - LEN("Je " + Stem$ + Ext$(1)), " ") + "Je ne " + Stem$ + Ext$(1) + " pas"
PRINT #1, "Tu " + Stem$ + Ext$(2) + STRING$(38 - LEN("Tu " + Stem$ + Ext$(2)), " ") + "Tu ne " + Stem$ + Ext$(2) + " pas"
PRINT #1, "Il " + Stem$ + Ext$(3) + STRING$(38 - LEN("Il " + Stem$ + Ext$(3)), " ") + "Il ne " + Stem$ + Ext$(3) + " pas"
PRINT #1, "Elle " + Stem$ + Ext$(4) + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(4)), " ") + "Elle ne " + Stem$ + Ext$(4) + " pas"
PRINT #1, "Nous " + Stem$ + Ext$(5) + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(5)), " ") + "Nous ne " + Stem$ + Ext$(5) + " pas"
PRINT #1, "Vous " + Stem$ + Ext$(6) + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(6)), " ") + "Vous ne " + Stem$ + Ext$(6) + " pas"
PRINT #1, "Ils " + Stem$ + Ext$(7) + STRING$(38 - LEN("Ils " + Stem$ + Ext$(7)), " ") + "Ils ne " + Stem$ + Ext$(7) + " pas"
PRINT #1, "Elles " + Stem$ + Ext$(8) + STRING$(38 - LEN("eeIll " + Stem$ + Ext$(8)), " ") + "Elles ne " + Stem$ + Ext$(8) + " pas"
PRINT #1, ""
PRINT #1, ""
PRINT #1, "(3)  Interogative                     (4)  Negative Interogative"
PRINT #1, ""
PRINT #1, "Est-ce que je " + Stem$ + Ext$(1) + STRING$(38 - LEN("Est-ce que je " + Stem$ + Ext$(1)), " ") + "Est-ce que je ne " + Stem$ + Ext$(1) + " pas"
MID$(Stem$, 1, 1) = UCASE$(MID$(Stem$, 1, 1))
PRINT #1, Stem$ + Ext$(2) + "-tu" + STRING$(38 - LEN("Tu " + Stem$ + Ext$(2)), " ") + "Ne " + LCASE$(Stem$) + Ext$(2) + "-tu pas"
PRINT #1, Stem$ + Ext$(3) + "-il" + STRING$(38 - LEN("Il " + Stem$ + Ext$(3)), " ") + "Ne " + LCASE$(Stem$) + Ext$(3) + "-il pas"
PRINT #1, Stem$ + Ext$(4) + "-elle" + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(4)), " ") + "Ne " + LCASE$(Stem$) + Ext$(4) + "-elle pas"
PRINT #1, Stem$ + Ext$(5) + "-nous" + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(5)), " ") + "Ne " + LCASE$(Stem$) + Ext$(5) + "-nous pas"
PRINT #1, Stem$ + Ext$(6) + "-vous" + STRING$(38 - LEN("eeIl " + Stem$ + Ext$(6)), " ") + "Ne " + LCASE$(Stem$) + Ext$(6) + "-vous pas"
PRINT #1, Stem$ + Ext$(7) + "-ils" + STRING$(38 - LEN("Ils " + Stem$ + Ext$(7)), " ") + "N" + Sep$ + LCASE$(FixVerb$(Stem$)) + Ext$(7) + "-ils pas"
PRINT #1, Stem$ + Ext$(8) + "-elles" + STRING$(38 - LEN("eeIll " + Stem$ + Ext$(8)), " ") + "Ne " + LCASE$(Stem$) + Ext$(8) + "-elles pas"
PRINT #1, ""
PRINT #1, ""
LOCATE , , 1: LOCATE 25, 1: PRINT "Do another (y/N)?"; : d$ = UCASE$(INPUT$(1)): PRINT d$;
IF d$ = "Y" THEN CLS : GOTO 10
CLOSE 1
END

AResume:
RESUME

SUB DoExt (Ext$)
SELECT CASE UCASE$(Ext$)
CASE "IR"
        Ext$(1) = "is"  'JE-IS
        Ext$(2) = "is"  'TU-IS
        Ext$(3) = "it"  'IL-IT
        Ext$(4) = "it"  'ELLE-IT
        Ext$(5) = "issons"  'NOUS-ISSONS
        Ext$(6) = "issez"  'VOUS-ISSEZ
        Ext$(7) = "issent"  'ILS-ISSENT
        Ext$(8) = "issent"  'ELLES-ISSENT
CASE "ER"
        Ext$(1) = "e"  'JE-E
        Ext$(2) = "es"  'TU-ES
        Ext$(3) = "e"  'IL-E
        Ext$(4) = "e"  'ELLE-E
        Ext$(5) = "ons"  'NOUS-ONS
        Ext$(6) = "ez"  'VOUS-EZ
        Ext$(7) = "ent"  'ILS-ENT
        Ext$(8) = "ent"  'ELLES-ENT
CASE "RE"
        Ext$(1) = "s"  'JE-E
        Ext$(2) = "s"  'TU-ES
        Ext$(3) = ""  'IL-
        Ext$(4) = ""  'ELLE-
        Ext$(5) = "ons"  'NOUS-ONS
        Ext$(6) = "ez"  'VOUS-EZ
        Ext$(7) = "ent"  'ILS-ENT
        Ext$(8) = "ent"  'ELLES-ENT
CASE ELSE: PRINT "UNKNOW VERB TYPE: " + UCASE$(Ext$): END
END SELECT
END SUB

FUNCTION FixVerb$ (v$)
IF LCASE$(LEFT$(v$, 1)) = "a" OR LCASE$(LEFT$(v$, 1)) = "e" OR LCASE$(LEFT$(v$, 1)) = "i" OR LCASE$(LEFT$(v$, 1)) = "o" OR LCASE$(LEFT$(v$, 1)) = "u" THEN FixVerb$ = RIGHT$(v$, LEN(v$) - 1) ELSE FixVerb$ = v$
END FUNCTION

FUNCTION IsVowel (v$)
IF LCASE$(LEFT$(v$, 1)) = "a" OR LCASE$(LEFT$(v$, 1)) = "e" OR LCASE$(LEFT$(v$, 1)) = "i" OR LCASE$(LEFT$(v$, 1)) = "o" OR LCASE$(LEFT$(v$, 1)) = "u" THEN IsVowel = -1 ELSE IsVowel = 0
END FUNCTION

