Sicherlich stellt sich das nicht ganz so einfach da.

Ob ein Spool gedruckt wurde oder nicht entscheidet sich über 2 Möglichkeiten:
a) der Status ist SAV
b) der Spool ist weg, da das Attribut SAVE(*YES) fehlte

Die Anzahl Seiten über Spool-API festzustellen dürfte nicht so das Problem sein, vorausgesetzt es wurde nicht mit AFPDS-Schlüsselworten (nicht SKIP) ein Seitenwechsel durchgeführt, da dann auch der Spooler die Anzahl Seiten nicht kennt.

Steht eine Spooldatei in SAV, weiß man nicht, wie oft sie ggf. noch mal gedruckt wurde, da mit jeder Freigabe in Status RDY ein erneuter Druck möglich ist.

Für eine Überwachung benötigt man am einfachsten eine DTAQ, die man an alle zu überwachenden OUTQ's hängt, also an die realen Drucker.
Mit jedem RDY-Status gibts einen Eintrag in die DTAQ, so dass ein Überwachungsprogramm auf der DTAQ dies mitbekommt.

Nun aus der DTAQ über die Spoolfileattribute die "interne" Spool-ID und die Anzahl Seiten ermitteln, das Ergebnis in eine PF mit einem Status-Flag "offen" schieben.

Anschließend regelmäßig die PF durchackern und über die interne Spoolid den aktuellen Status prüfen.

Status SAV-> gedruckt
Nicht vorhanden-> (wahrscheinlich!) gedruckt und gelöscht
Status-Flag in der PF auf erledigt setzen.

Ggf. sind auch die Anzahl Kopien mit zu berücksichtigen!

Das Ganze muss allerdings auch noch relativ zeitnah passieren, da Spools, die nicht gesichert werden, unter Umständen eher weg (also gelöscht sind) als das Programm reagieren konnte.

Nun gibts noch die Varianten, dass jede Outq an jeden beliebigen Drucker gehängt werden kann, also jederzeit ggf. eine nicht überwachte OUTQ dann doch an einen Drucker kommt.