Бесконечный цикл 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

конец процедуры

Спасибо!

0 ответов

Другие вопросы по тегам