Exemple
MACRO "animals.mac"
!
COM @File,Rec_len,Msi$[120],File$[30]
! Initialisation
GET SYSTEM "MACRO EXEC VOL";Msi$
MASS STORAGE IS Msi$
File$="ANIMAUX.txt"
Rec_len=80
! Ouverture du fichier des animaux
CALL Init_fichier
! Recherche de l'animal
Num=1
LOOP
CALL Read(Num,Ques$,Rep1,Rep2)
IF Rep1=0 THEN
X$="C'est "&Ques$&" !"
ELSE
X$=Ques$&" ?"
END IF
X$=X$&"|OUI|NON"
Rep$=""
Entree: INPUT X$;Rep$
CALL Select_rep(Rep$,Code)
SELECT Code
! Réponse OUI
CASE 1
IF Rep1=0 THEN
MESSAGE "J'AI TROUVE"
Num=1
ELSE
Num=Rep1
END IF
! Réponse NON
CASE 2
IF Rep1=0 THEN
R2$=""
INPUT "Quel est votre animal ?";R2$
L=LEN(R2$)
IF L THEN
R1$=Ques$
Ques$="Question pour différencier "&R2$&" et "&R1$
Rep$=""
INPUT Ques$;Rep$
IF LEN(Rep$) THEN
CALL Read_num(Nb_inp)
CALL Write(Num,Rep$,Nb_inp+1,Nb_inp+2)
CALL Write(Nb_inp+1,R2$,0,0)
CALL Write(Nb_inp+2,R1$,0,0)
CALL Write_num(Nb_inp+2)
END IF
END IF
Num=1
ELSE
Num=Rep2
END IF
! Réponse LISTE
CASE 3
CALL Liste
GOTO Entree
! Réponse FIN
CASE 4
STOP
! Réponse fausse
CASE ELSE
ERROR "Répondre par OUI ou NON"
GOTO Entree
END SELECT
END LOOP
END
! Sélection d'une réponse
SUB Select_rep(Rep$,Code)
Reponse: DATA "OUI","NON","LISTE","FIN"
RESTORE Reponse
Rep$=UPC$(TRIM$(Rep$))
FOR Code=1 TO 4
READ A$
IF A$=Rep$ THEN SUBEXIT
NEXT Code
Code=0
SUBEND
! Ouverture du fichier des animaux
SUB Init_fichier
OPEN ASCII @File TO File$;Err
IF Err THEN CALL Nouv_fichier
SUBEND
! Création d'un nouveau fichier animaux
SUB Nouv_fichier
CREATE File$;Err
IF Err THEN
ERROR "IMPOSSIBLE DE CREER LE FICHIER ",File$
STOP
END IF
OPEN ASCII @File TO File$;Err
IF Err THEN
ERROR "IMPOSSIBLE D'OUVRIRE LE FICHIER ",File$
STOP
END IF
CALL Write_num(0)
CALL Write(1,"Est-ce un mammifère",2,3)
CALL Write(2,"un lion",0,0)
CALL Write(3,"un poisson",0,0)
SUBEND
! Lecture d'une question
SUB Read(Num,Ques$,Rep1,Rep2)
SEEK @File,Num*Rec_len
ENTER @File;Ques$,Rep1,Rep2
SUBEND
! Ecriture d'une question
SUB Write(Num,Ques$,Rep1,Rep2)
SEEK @File,Num*Rec_len
OUTPUT @File,Ques$
OUTPUT @File,Rep1
OUTPUT @File,Rep2
CALL Read_num(Nb_inp)
IF Num>Nb_inp THEN CALL Write_num(Num)
SUBEND
! Lecture du nombre de question
SUB Read_num(Num)
SEEK @File,0
ENTER @File;Num
SUBEND
! Ecriture du nombre de question
SUB Write_num(Num)
SEEK @File,0
OUTPUT @File,Num
SUBEND
! Liste des questions et réponses du fichier animaux
SUB Liste
ALPHA ON
ALPHA CLEAR
CALL Read_num(Nb_inp)
FOR I=1 TO Nb_inp
CALL Read(I,Ques$,Rep1,Rep2)
PRINT I,Ques$,Rep1,Rep2
NEXT I
ALPHA VIEW
SUBEND
END MACRO
|