Parameter sind falsch. Bei Return darfst Du keine Parameter mitgeben. NullPointer kommt durch Parm Abfrage auf getOutputData() die nicht vorhanden sind bei Parm 1+2.

Bitte nächstes mal funktionierendes Code-Beispiel einfügen!

Code:
public class Test2 {

	public static void main(String[] args) {

		AS400 system = new AS400("xx.x.x.x", "xx", "xx");

		ProgramCall program = new ProgramCall(system);
		try {

			String programName = "/QSYS.LIB/xxxx.LIB/TEST.PGM";

			ProgramParameter[] parameterList = new ProgramParameter[3];

			AS400Text In_parm1 = new AS400Text(10, system);
			parameterList[0] = new ProgramParameter(In_parm1.toBytes("Ich bin"));

			AS400Text In_parm2 = new AS400Text(10, system);
			parameterList[1] = new ProgramParameter(In_parm2.toBytes(" gut!"));

			// Keine Par, mitgeben!!!
			parameterList[2] = new ProgramParameter(20);

			program.setProgram(programName, parameterList);

			// Run the program.
			if (!program.run()) {
				
				System.out.println("Program failed!");
				AS400Message[] messagelist = program.getMessageList();
				for (int i = 0; i < messagelist.length; ++i) {
					System.out.println(messagelist[i]);
				}

			} else {
				AS400Text text = new AS400Text(20, system);
				System.out.println(text.toObject(parameterList[2].getOutputData()));
			}

		} catch (Exception e) {
			System.out.println("Program " + program.getProgram()+ " did not run!" + e);

		} finally {
			system.disconnectAllServices();
		}

	}
}