I'm giving the original poster a freebie he does not deserve. There are no comments so the original poster can figure out for himself how the program works, though I will answer questions. Rather than get into trouble with the AMODE/RMODE conflicts possible with the original caller's idea of using LOAD and CALL, this program uses the LINK macro which will handle AMODE/RMODE conflicts and achieve the same result.
* RUN A PROGRAM SPECIFIED IN THE JCL EXEC STATEMENT PARM TEXT
* // EXEC PGM=RUNPGM,PARM='PROGRAM/PARM TEXT FOR PROGRAM'
RUNPGM CSECT
USING *,12
SAVE (14,12),,*
LR 12,15
LA 15,SAVEAREA
ST 15,8(,13)
ST 13,4(,15)
LR 13,15
L 2,0(,1)
LH 5,0(,2)
LA 5,1(5,2)
LA 4,1
LA 3,2(,2)
LR 14,3
GETNAME CLI 0(3),C'/'
BE GOTNAME
BXLE 3,4,GETNAME
GOTNAME LR 15,3
SR 15,14
BP MOVENAME
ABEND 1,DUMP
MOVENAME C 15,=F'8'
BNH MOVEPGM
ABEND 2,DUMP
MOVEPGM BCTR 15,0
EX 15,COPYPGM
BXH 3,4,NOPARM
LA 15,1(,5)
SR 15,3
BNP NOPARM
STH 15,PARMLEN
BCTR 15,0
EX 15,COPYPARM
NOPARM LINK EPLOC=PGMNAME,PARAM=PARMLEN,VL=1
L 13,4(,13)
RETURN (14,12),T,RC=(15)
COPYPGM MVC PGMNAME(*-*),0(14)
COPYPARM MVC PARMTEXT(*-*),0(3)
SAVEAREA DC 9D'0'
PGMNAME DC CL8' '
PARMLEN DC H'0'
PARMTEXT DC CL100' '
END RUNPGM