DCL SPCPTR .PARM1 PARM; DCL DD NBR-OF-DISKS PKD(15,5) BAS(.PARM1); DCL DD SOURCE BIN(4) PARM; DCL DD DEST BIN(4) PARM; DCL DD SPARE BIN(4) PARM; DCL OL PARMS(.PARM1, SOURCE, DEST, SPARE) PARM EXT MIN(1); DCL SPCPTR .ARG1 AUTO; DCL DD REMAINING-DISKS PKD(15,5) AUTO; DCL DD ROD1 BIN(4) INIT(1); DCL DD ROD2 BIN(4) INIT(2); DCL DD ROD3 BIN(4) INIT(3); DCL OL MOVE-START(.ARG1, ROD1 , ROD2 , ROD3 ) ARG; DCL OL MOVE-OFF (.ARG1, SOURCE, SPARE, DEST ) ARG; DCL OL MOVE-BACK (.ARG1, SPARE , DEST , SOURCE) ARG; DCL SYSPTR .MITWRHAN INIT("MITWRHAN", TYPE(PGM)); DCL DD EDITED-NBR ZND(3,0); DCL DD NBR-OF-PARMS BIN(2); ENTRY * (PARMS) EXT; SETSPP .ARG1, REMAINING-DISKS; STPLLEN NBR-OF-PARMS; CMPNV(B) NBR-OF-PARMS, 1/NEQ(THERE-AFTER); FIRST-TIME: CPYNV REMAINING-DISKS, NBR-OF-DISKS; CMPNV(B) REMAINING-DISKS, 0/NHI(=+2); CALLX .MITWRHAN, MOVE-START, *;: RTX *; THERE-AFTER: CMPNV(B) NBR-OF-DISKS, 1/NHI(=+3); SUBN REMAINING-DISKS, NBR-OF-DISKS, 1; CALLX .MITWRHAN, MOVE-OFF, *;: CPYBLAP MSG-TEXT, "MOVE DISK", " "; CPYNV EDITED-NBR, NBR-OF-DISKS; CPYBLA MSG-TEXT(12:3), EDITED-NBR; CPYBLA MSG-TEXT(17:5), "FROM"; CPYNV EDITED-NBR, SOURCE; CPYBLA MSG-TEXT(24:3), EDITED-NBR; CPYBLA MSG-TEXT(29:4), "TO"; CPYNV EDITED-NBR, DEST; CPYBLA MSG-TEXT(35:3), EDITED-NBR; CALLI SHOW-MESSAGE, *, .SHOW-MESSAGE; CMPNV(B) NBR-OF-DISKS, 1/NHI(=+3); SUBN REMAINING-DISKS, NBR-OF-DISKS, 1; CALLX .MITWRHAN, MOVE-BACK, *;: RTX *; %INCLUDE SHOWMSG