* Hofstrader q sequence for any n - 18/10/2015 HOFSTRAD CSECT USING HOFSTRAD,R15 set base register MVC Q,=F'1' q(1)=1 MVC Q+4,=F'1' q(2)=1 LA R4,1 i=1 LOOPI C R4,N do i=1 to n BH ELOOPI C R4,=F'3' if i>=3 then BL NOTREC LR R1,R4 i SLA R1,2 i*4 L R2,Q-8(R1) q(i-1) LR R1,R4 i SR R1,R2 i-q(i-1) SLA R1,2 *4 L R2,Q-4(R1) r2=q(i-q(i-1)) LR R1,R4 i SLA R1,2 i*4 L R3,Q-12(R1) q(i-2) LR R1,R4 i SR R1,R3 i-q(i-2) SLA R1,2 *4 L R3,Q-4(R1) r3=q(i-q(i-2)) AR R2,R3 r2=r2+r3 LR R1,R4 i SLA R1,2 i*4 ST R2,Q-4(R1) q(i)=q(i-q(i-1))+q(i-q(i-2)) NOTREC C R4,=F'10' if i<=10 BNH PRT C R4,N or i=n then BNE NOPRT PRT XDECO R4,XD edit i MVC PG+2(4),XD+8 output i LR R1,R4 i SLA R1,2 i*4 L R2,Q-4(R1) q(i) XDECO R2,XD edit q(i) MVC PG+10(4),XD+8 output q(i) XPRNT PG,80 print buffer NOPRT LA R4,1(R4) i=i+1 B LOOPI ELOOPI XR R15,R15 set return code BR R14 return to caller PG DC CL80'n=...., q=....' buffer XD DS CL12 temporary variable LTORG insert literals for addressability N DC F'1000' n=1000 Q DS 1000F array q(1000) YREGS END HOFSTRAD