Is an SJP really that simple in a real application?

Probably not. Often the programs being called required simple (and sometimes complex) parameters to be passed to them and amongst them.

However, in this style of application design, groups of programs usually fall into large application groups that share a common parameter protocol.

By adding an REQUEST_TYPE (say) field to the information exchanged between RAMP scripts you can easily accommodate different program parameter protocols along these lines (logic is in pseudo code):

    WRITE and READ the 5250 screen containing PGMNAME and REQUEST_TYPE  

  

    DOWHILE (REQUEST_TYPE not equal to "SIGNOFF")

   

         CASE of REQUEST_TYPE

             WHEN = "CALLP1" CALL PGM_NAME using calling protocol 1 for parameters   

             WHEN = "CALLP2" CALL PGM_NAME using calling protocol 2 for parameters   

             WHEN = "CALLP3" CALL PGM_NAME using calling protocol 3 for parameters  

             <etc>

         ENDCASE

         WRITE and READ the 5250 screen containing PGMNAME and REQUEST_TYPE  

    ENDWHILE

    

If you are used to RPG and CL programs you might not be aware just how flexible the IBM i program call interface is. Program parameters are just areas of memory and passed between programs as pointers. You might not know: