* Linear congruential generator 07/03/2017 LINCONG CSECT USING LINCONG,R12 LR R12,R15 set base register BEGIN SR R5,R5 bsdseed=0 SR R7,R7 msseed=0 LA R8,1 i=1 L R9,=F'10' number of loop LOOP M R4,=F'1103515245' bsdseed*=1103515245 A R5,=F'12345' bsdseed+=12345 LR R3,R5 bsdrand=bsdseed LTR R5,R5 if bsdseed<0 BP CONT then L R3,COMP2 -2**31 SR R3,R5 -bsdseed LPR R3,R3 bsdrand=abs(-2**31-bsdseed) CONT M R6,=F'214013' msseed*=214013 A R7,=F'2531011' msseed+=2531011 XR R6,R6 D R6,TWO16 /2**16 XDECO R8,XDEC i MVC PG(4),XDEC+8 XDECO R3,XDEC bsdrand MVC PG+4(12),XDEC XDECO R7,XDEC msseed MVC PG+16(7),XDEC+5 XPRNT PG,L'PG print buffer LA R8,1(R8) i=i+1 BCT R9,LOOP loop RETURN XR R15,R15 set return code BR R14 return to caller DS 0F alignment TWO16 DC XL4'00010000' 2**16 COMP2 DC XL4'80000000' -2**31 PG DC CL80' ' XDEC DS CL12 YREGS END LINCONG