Ce code-ci est un éditeur de texte. Le programme demande un nom de fichier à l'usager et l'éditera si le fichier existe.
begin external class windowtools; simplewindow class MyWindow; begin ref(button) quit,save; !boutons de sortie et de sauvegarde du fichier; ref(scrollwindow) edit; !fenetre d'edition; text filename; !nom du fichier d'entree et/ou sortie; boolean procedure readfile(fname);TEXT fname; !Procedure qui lit un fichier et le met dans edit et qui indique a la fin si le fichier demande existe; begin ref(InFile) f; boolean opened; f:-NEW InFile(filename); opened := f.Open(Blanks(500)); IF opened then begin f.InImage; while not f.Endfile DO !On met le fichier ligne par ligne dans edit; begin edit.initputline(f.Image.strip); f.InImage; end; edit.refreshlines; !On rafra\^{\i}chit la fen\^etre; f.Close; end; readfile:=opened; end; procedure savefile(fname); text fname; !Sauve le contenu de edit dans le fichier; begin integer i,nlines=20; text t; ref(OutFile) output; output:-new OutFile(fname); output.Open(Blanks(500)); for i:=1 step 1 until edit.GetNumberOfLines do begin t:-edit.getline(i); output.OutText(t); output.OutImage; end; output.Close; MakeMessageWindow.TimedMessage(``File Saved'',3); end; procedure createnewfile; begin filename :- ask_for_text(``Filename''); !Nouveau fichier; if filename=/=notext then !ouverture du fichier; begin if ReadFile(filename) then MakeMessageWindow.TimedMessage(``File Exists'',3); edit.allowinput; save.allow; end; end; PROCEDURE opennewfile; begin ref (DirectoryMenu) menu; menu :- new directorymenu(this XWindow,notext); menu.setsize(400,300); menu.placecentered; menu.show; filename :- menu.Waitmenu; if filename =\= notext and then ReadFile(filename) then begin !ouverture du fichier; edit.allowinput; save.allow; end; menu.destroy; !destruction du menu inutile; end; procedure ClickInButton(b);ref(button) b; !Recupere l'enfoncement du bouton enfonce et agit en consequence; if b==save then savefile(filename) else if b==newfile then createnewfile else if b==openfile then opennewfile; quit :- makebutton(``Quit''); !creation des sous-fenetres; save :- makebutton(``Save'').Disallow; !interdiction de sauver avant d'avoir un nom de fichier; newfile:-makebutton(``New File''); !boutons d'ouverture de fichier; openfile:-makebutton(``OpenFile''); edit :- makescrollwindow; filename :- ask_for_text(``Filename''); !demande du nom de fichier; if not ReadFile(filename) then !ouverture du fichier; MakeMessageWindow.TimedMessage(``Nouveau Fichier'',3); edit.allowinput; !permission pour editer le contenu de edit; save.allow; !permission de sauver; quit.Wait; !boucle d'attende d'evenement; end; new Mywindow(``Edit File''); !creation de la fenetre principale; end.