Entweder ein Binderverzeichnis erstellen oder jedes Modul mit CRTCBLMOD erstellen und anschließend per CRTPGM die Module durch Einzelangabe "binden", dabei allerdings nicht vergessen, das Start-Modul zu benennen (meistens das 1.).

Da der CRTBNDCBL das Programm T2 nicht findet (fehlendes Binderverzeichnis) geht er von einem Programm und nicht von einer Funktion aus. Bei Programmen ist aber "returning" nicht erlaubt.

Bei kleinen Programmen kann man ja auf Binderverzeichnisse verzichten. Bei größeren sollte man diese jedoch verwenden, es vereinfacht das Binden, insbesonders wenn man Funktionen/Module in Service-Pgm'e auslagert gehts nicht mehr anders.

Hinweis:
Da der Compiler generell nicht zwischen internen oder externen Call's unterscheidet ist die Fehlersuche natürlich etwas schwerer wenn kein "returning" verwendet wird.
Erst zur Laufzeit wird ggf. ein Tippfehler im Modulnamen bemerkt, da das Modul zur Erstellzeit nicht als statischer Call erkannt wird (Aufruf eines Moduls) und daher von einem dynamischen Call ausgeht.

Übrigens:
Man kann auch mehrere Module in eine Quelle stecken (ich finde nur nicht mehr wo es stand). Vorteil ist hier ggf. dass die anderen Module nach aussen nicht sichtbar sind sondern nur vom 1. Modul aufgerufen werden können (wofür immer das auch gut sein mag).