Бесконечный цикл while с условием разрыва в SQR
У меня есть эта проблема бесконечного цикла в коде sqr. У меня есть условие, которое должно остановить это, хотя a $objet равен [4]: Вот код:
Начальная процедура Extracteur(#id_document)
переместить -1 в #index_fin_objet do Lire_ligne_suivante ($objet) do Lire_ligne_suivante ($ ligne)
let #occurrence = 1, если $ligne = 'FIN' делает Extr_objet($objet,0,#index_fin_objet,0,# вхождение,0) end-if
в то время как $ligne <> 'FIN'
if $objet <> 'FIN'
get #num_lettre from DOCUMENT(0) num_derniere_lettre
get #nb_occurrences from BOITE_AUX_LETTRES(#num_lettre) occurrence
let #compteur_occurrence = 1
let #occurrence = 1
print #nb_occurrences (+1,1)
while (#compteur_occurrence <= #nb_occurrences)
let #index_deb_objet = #index_fin_objet + 1
print $objet (+1,1)
print #occurrence (,+5)
print #num_lettre (,+5)
print #compteur_occurrence (,+5)
if $ligne = '{'
do Extr_objet($objet,#index_deb_objet,#index_fin_objet,1,
#occurrence,#num_lettre)
else
do Extr_objet($objet,#index_deb_objet,#index_fin_objet,0,
#occurrence,#num_lettre)
end-if
add 1 to #compteur_occurrence
subtract 1 from #num_lettre
end-while
end-if
evaluate $ligne
when = '{'
let $objet = ''
break
when = '}'
let $objet = ''
do Depiler_BOITE_AUX_LETTRES
break
when-other
let $objet = $ligne
end-evaluate
do Lire_ligne_suivante($ligne)
**IF $objet = '[4]'
print 'objet 4' (+1,1)
print $objet (+1,1)
break;
end-if**
if $ligne = 'FIN'
let #index_deb_objet = #index_fin_objet + 1
let #occurrence = 0
do Extr_objet($objet,#index_deb_objet,#index_fin_objet,0,#occurrence,0)
end-if
конца в то время как
конец процедуры
и вот процедура Lire_ligne_suivante: начальная процедура Lire_ligne_suivante(:$ligne)
получить #num_fichier_cpl из DOCUMENT(0) num_fichier_document читать #num_fichier_cpl в $ligne:30, если # end-file переместить 'FIN' в $ ligne, в противном случае, если $ligne = '[1]', прочитать #num_fichier_cpl в $ligne:30-end
if $ligne = '[2]' let $ligne = 'FIN' end-if end-if
конец процедуры
Спасибо!