LSE (programming language)

LSE () is a programming language developed at Supélec and Télémécanique from the late 1960s to the mid 1970s.It is similar to BASIC, except with French-language instead of English-language keywords. It was derived from an earlier language called "LSD", also developed at Supélec. It is most commonly said to be an acronym for "Langage Symbolique d'Enseignement" (Symbolic Teaching Language), but other expansions are also known (e.g. "Langage de Sup-Élec", or the more cynical).
It originally flourished due to support from the French Ministry of National Education, but declined as the ministry lost interest. It went through a number of revisions; earlier versions of LSE lacked full support for structured programming, later versions such as LSE-83 (aka LSE-1983) by Jacques Arsac added structured programming support, along with exception handling. Even later revisions, such as LSE-2000, added more functionality, new types, new operators (NI, ET QUE, OU QUE and SELON-DANS-SINON), flow control commands, etc.
Code examples.
99 Bottles (AFNOR Z 65-020).
 1*CHANSON DES 99 BOUTEILLES DE BIERE
 2*PASCAL BOURGUIGNON, 2003
 10 FAIRE 20 POUR N←99 PAS -1 JUSQUA 1
 20 &STROF(N)
 30 AFFICHER['IL EST TEMPS D’’ALLER AU MAGASIN.',/]
 40 TERMINER
 100 PROCEDURE &STROF(N) LOCAL S1,S0;CHAINE S1,S0;S1←"S";S0←"S"
 110 SI N=2 ALORS S0←" SINON SI N=1 ALORS DEBUT S1←";S0←"" FIN
 120 AFFICHER[U,' BOUTEILLE',U,' DE BIERE SUR LE MUR.',/]N,S1
 130 AFFICHER[U,' BOUTEILLE',U,' DE BIERE.',/]N,S1
 140 AFFICHER['EN PRENDRE UNE, LA FAIRE PASSER.',/]
 150 AFFICHER[U,' BOUTEILLE',U,' DE BIERE SUR LE MUR.',2/]N-1,S0
 160 RETOUR
Anagrams (LSE-1983).
Example from Jacques Arsac in LSE83:
 1 CHAINE A,B,BP
 5 FAIRE
 10 AFFICHER 'A = ' ;LIRE A ; SI A=’’ ALORS FINI IS
 11 AFFICHER 'B = ' ;LIRE B ; BP ← B
 12
 15 R SI LGR(A) # LGR(B) ALORS .FAUX. SINON &ANAG(A,B) IS
 20 SI R ALORS AFFICHER A, 'EST ANAGRAMME DE ',BP
 21 SINON AFFICHER A, 'N’’EST PAS ANAGRAMME DE 1, BP
 22 IS
 25 BOUCLER
 29
 30 TERMINER
 31
 51 SI U=' ' ALORS RESULTAT .VRAI. IS
 52 SI J = 0 ALORS RESULTAT .FAUX. IS
 54 RESULTAT &ANAG(SCH(U,2, ' '),MCH(V,J,l, ' '))
 55 $&ANAG
 99 $
Largest common divisor, Euclid's algorithm (LSE2000).
 ** MÉTHODE D'EUCLIDE POUR TROUVER LE PLUS GRAND DIVISEUR COMMUN D'UN
 ** NUMÉRATEUR ET D'UN DÉNOMINATEUR.
 ** L. Goulet 2010
 PROCÉDURE &PGDC(ENTIER U, ENTIER V) : ENTIER LOCAL U, V
 ENTIER T
 TANT QUE U > 0 FAIRE
 SI U< V ALORS
 T←U
 U←V
 V←T
 FIN SI
 U ← U - V
 BOUCLER
 RÉSULTAT V
 FIN PROCÉDURE
 PROCÉDURE &DEMO(ENTIER U, ENTIER V) LOCAL U, V
 AFFICHER ['Le PGDC de ',U,'/',U,' est ',U,/] U, V, &PGDC(U,V)
 FIN PROCÉDURE
 &DEMO(9,12)