[riscosfr] Problème de LOCAL

  • From: Cocoa Pod <cocoa.pod@xxxxxxx>
  • To: riscosfr@xxxxxxxxxxxxx
  • Date: Fri, 6 Feb 2015 13:18:15 +0100

J’ai fait ce qui est ci-dessous. Au premier passage j’obtiens les bons 
résultats, ils sont imprimés correctement et la boucle principale reprend. 
Le deuxième passage dans FNBons et FNGood ne pose pas de problème. A 
l’exécution de PROCdoQunu, j’obtiens l’erreur : "Arrays cannot be 
redimensioned".
En mettant des "PRINT n" je constate que ce sont les lignes A et B qui me 
donnent cette erreur. Ces arrays doivent être  considérés comme GLOBAL 
(non-redimentionables) ?
Je modifie ces deux lignes suivant ce qui est indiqué page 93 et 94 du 
BBCBASIC.pdf:
LOCAL Qn%()
DIM Qn%(DIM(Qu%(),1),DIM(Qu%(),2))                      A
Qn%() = Qu%() 
LOCAL C%()
DIM C%(6,3)                                                                     
B
C%(4,0) = 0 : C%(4,1) = 1
Au premier tour de boucle  j’obtiens l’erreur :  "Items can only be made local 
in a function or procedure "
C’est dans une procédure! alors quel est ce problème ?
merci d’avance pour vos lumières !
 Miguel


REM Début programme
REM
DIM Qnu%(6,6)
DIM Ndx%(6,3)
DIM H%(14)
Target% = 999
ecart% = 0
Bcl% = 0
DATA 1860,1870,1880,1890,1900,1910,1920
DATA 1930,1940,1950,1960,1970,1980,1990
READ H%(0),H%(1),H%(2),H%(3),H%(4),H%(5),H%(6),H%(7)
READ H%(8),H%(9),H%(10),H%(11),H%(12),H%(13)

PRINT "***** boucle principale*****"‘
REPEAT
    Bcl% = FNBons(H%(), Qnu%())
    IF Bcl% <> 0 THEN
        Bcl% = FNGood
        IF Bcl% <> 0 THEN
            Target% = Bcl% : TIME = 0
            PROCdoQunu( Qnu%(), Ndx%(), Target%, ecart% )
            PROCdoPrint( Qnu%(), Ndx%(), Target%, ecart% )
            PRINT "---------- ";TIME/100;" secondes ----------"'
        ENDIF
    ENDIF
UNTIL Bcl% = 0
PRINT
PRINT "***** A bientôt,  Cocoa pod *****"'

END :  REM fin boucle principale

REM  calcul dates --------------------------------------------------
DEF PROCdoQunu ( Qu%(), Nd%(), cible%, RETURN delta% )

DIM Qn%(6,6) : Qn%() = Qu%()                                                    
A
DIM C%(6,3) : C%(4,0) = 0 : C%(4,1) = 1                                 B
LOCAL nbln% : nbln% = 6
LOCAL diff% : diff% = 1000
LOCAL Z1%
LOCAL Z2%

……  ici suite du programme qui ne pose pas de problème.





Cocoa Pod
http://cocoa.pod.free.fr/
http://www.aconit.org/




Other related posts: