Programiranje liste sa natpisima

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