Recimo da treba da napravite skript koji lista neku tabelu, ali zelite da odvojite stavke po nekim grupama: vrsta artikla, carinska tarifa, … a recimo da vam trebaju i medjuzbirovi. Na primer, ovako:
1.123 Cokolada 1 100 Mleko 2 50 -------------------- 200 2.342 Jogurt 10 34 Jorgan 1 223 -------------------- 456
Tada je najbolje koristiti sledecu konstrukciju:
%COMMAND c := nTar := 0 %WHILE ! Eof() %a_naziv% %Tk(ns_kol)% %Tc(ns_cena)% %COMMAND c := c + ns_kol*ns_cena %SKIP %IF nTar <> Artikli->a_tarid ────────────────────────────────── UKUPNO %Tc(c)% %ENDIF %ENDDO
U pitanju je obicna WHILE petlja, ali primetite da se stampa zbira obavlja _posle_ SKIP komande. Ovim se izbegava problem sa zadnjim elementom tabele (da sad ne objasnjavam, probajte), jer se tada zbir mora duplo pisati.
Ostaje jos jedan problem, a to je ispis tarife ispred svakog pasusa. Moze se dodati posle sume, ali onda mora posebno da se ispituje kad je u pitanju PRVO pojavljivanje. Bolje je da se napravi posebna IF naredna i to na pocetku ciklusa:
%COMMAND c := nTar := 0 %WHILE ! Eof() %IF nTar <> a_tar // HEDER %a_tar% %COMMAND nTar := a_tar %ENDIF %a_naziv% %Tk(ns_kol)% %Tc(ns_cena)% %COMMAND c := c + ns_kol*ns_cena %SKIP %IF nTar <> a_tar // SUMA ────────────────────────────────── UKUPNO %Tc(c)% %ENDIF %ENDDO