To add to other responses, you can save program objects from a source system with higher IBM i release and restore them to the target system with a lower release by specifying TARGET RELEASE parameter of CRTxxxPGM or SAVOBJ command. But the range of target release supported is limited (you press F4 at the TGTRLS parameter to see all old releases supported). There are other limitations as well, for example the program must not contain new syntax that the old target releases do not support. Here is more info:
To specify that an object be saved for distribution to a system at a different release level than the system on which the save operation is to occur, the procedure differs for program or non-program objects and by the release level on which a program object is created. If, for example, you are saving an object for distribution to a target system running on an earlier release, you have the following choices:
For program objects:
- If the program object was created at a release level more current than the targeted earlier release, you must:
- create the program object again specifying the targeted earlier release
- save the program object specifying the targeted earlier release
- restore the program object on the target system.
- If the program object was created at the same release level as the target system, you can:
- save the program object specifying the targeted earlier release
- restore the program object on the target system.