DCL SPCPTR .PARM1 PARM; DCL DD PARM-SEQNBR PKD(15,5) BAS(.PARM1); DCL SPCPTR .PARM2 PARM; DCL DD PARM-RESULT ZND(31,0) BAS(.PARM2); DCL OL PARMS(.PARM1, .PARM2) PARM EXT MIN(1); DCL SPCPTR .ARG1 AUTO; DCL DD FIB-WANTED PKD(15,5) AUTO; DCL SPCPTR .ARG2 AUTO; DCL DD FIB-RESULT ZND(31,0) AUTO; DCL OL MIFIBNBR(.ARG1, .ARG2) ARG; DCL SYSPTR .MIFIBNBR INIT("MIFIBNBR", TYPE(PGM)); DCL DD TERM1 PKD(31,0) AUTO; DCL DD TERM2 PKD(31,0) AUTO; DCL DD N PKD(5,0) AUTO; DCL DD M PKD(5,0) AUTO; DCL DD R PKD(5,0) AUTO; DCL DD NBR-OF-PARMS BIN(2); ENTRY * (PARMS) EXT; SETSPP .ARG1, FIB-WANTED; SETSPP .ARG2, FIB-RESULT; CPYNV N, PARM-SEQNBR; CMPNV(B) N, 3/LO(STARTING-VALUES); DIVREM M, N, 2, R; /* R = 0,1 FOR N EVEN,ODD */ ADDN FIB-WANTED, M, 1; CALLX .MIFIBNBR, MIFIBNBR, *; MULT TERM1, FIB-RESULT, FIB-RESULT; CMPNV(B) R, 0/EQ(EVEN); ODD: CPYNV FIB-WANTED, M; CALLX .MIFIBNBR, MIFIBNBR, *; MULT TERM2, FIB-RESULT, FIB-RESULT; ADDN(B) FIB-RESULT, TERM1, TERM2/NNEG(DONE); EVEN: SUBN FIB-WANTED, M, 1; CALLX .MIFIBNBR, MIFIBNBR, *; MULT TERM2, FIB-RESULT, FIB-RESULT; SUBN(B) FIB-RESULT, TERM1, TERM2/NNEG(DONE); STARTING-VALUES: CPYNV FIB-RESULT, 1; CMPNV(B) N, 0/HI(DONE); CPYNV FIB-RESULT, 0; DONE: STPLLEN NBR-OF-PARMS; CMPNV(B) NBR-OF-PARMS, 1/EQ(SHOW-RESULT); CPYNV(B) PARM-RESULT, FIB-RESULT/NNAN(RETURN); SHOW-RESULT: CPYBLAP MSG-TEXT, FIB-RESULT, " "; CALLI SHOW-MESSAGE, *, .SHOW-MESSAGE;: RETURN: RTX *; %INCLUDE SHOWMSG