Es gibt kein Tool mit dem dieses Festgestellt werden kann, da letztendlich immer nur Adressen übergeben werden.
Die Länge und Ausprägung der Parameter wird einzig und allein durch die Quelle des Programmes bestimmt.
Es gib auch im Programm keine Möglichkeit festzustellen, welche Felder tatsächlich übergeben werden.

Kleine Ausnahme: ILE mit Descriptoren. Die Descriptoren können allerdings ignoriert werden.

Der Vorteil von CALL zu CALLB ist sicherlich das Binden der einzelnen Module zu einem Programm.
Allerdings kann es da zu Schwierigkeiten führen, wenn ein ehemaliges OPM-Programm nun als Prozedur aufgerufen wird:
*INLR = *ON beim Verlassen sowie *INZSR funktionieren nicht.
Wenn sich ein Programm also bisher darauf verlassen hat, beim erneuten Aufruf initialisiert zu werden, so erfolgt das beim CALLB nicht mehr und es kommt eben zu obigen Problemen.
Auch ein RCLRSC im aufrufenden CLP läuft so ggf. nicht mehr (das Problem hatten wir schon).
Ggf. ist das Hauptprogramm mit einer eigenen ACTGRP oder *NEW zu erstellen, so dass RCLACTGRP verwendet werden kann.
Dies löst dann auf jeden Fall das Initialisierungsproblem.

Aber Achtung:
Bei bestimmten Dateiformen (O-Bestimmungen) mit Blockung wird dann der letzte Puffer nicht in die Datei ausgegeben.