TITLE ' IFDOLT11--RANDOM DATA GENERATOR.' 00010000 TITLE 'IFDOLT11--RANDOM DATA GENERATOR.' 00020000 LCLA &T,&SPN 0002 00030000 .@001 ANOP 0002 00040000 IFDOLT11 CSECT , 0002 00050000 BC 15,24(0,@F) 00060000 DC C'IFDOLT11 14 SEP 73' 0002 00070000 STM @E,@C,12(@D) 0002 00080000 BALR @4,0 0002 00090000 @PSTART DS 0H 0002 00100000 USING @PSTART+00000,@4 0002 00110000 * R8=R1; /* PARAMETER LIST ADDRESS */ 00120000 LR @8,@1 0016 00130000 * R5=RINPA; /* INPUT ADDRESS */ 00140000 L @5,0(0,@8) 0017 00150000 * H4=RCNT4&'03'X; /* EXCESS OF MULTIPLES */ 00160000 MVI H4,X'03' 0018 00170000 NC H4(1),11(@8) 0018 00180000 * IF RD10=0 THEN /* RANDOM NUMBER IS ZERO */ 00190000 CLC RD10(4),@D1 0019 00200000 BC 07,@9FF 0019 00210000 * RD103='1234'X; /* OBTAIN A RANDOM NUMBER */ 00220000 MVC RD10+2(2),@X2 0020 00230000 * I4='04'X; /* FOUR BYTES PER MULTIPLE */ 00240000 @9FF MVI I+3,X'04' 0021 00250000 * DO R6=(RCNT+3)/4 TO 1 BY -1; /* MOVE FOUR BYTES AT A TIME * 00260000 LA @E,3 0022 00270000 A @E,8(0,@8) 0022 00280000 SRDA @E,32 0022 00290000 LA @0,4 0022 00300000 DR @E,@0 0022 00310000 LTR @6,@F 0022 00320000 BC 12,@DO9FD 0022 00330000 @DO9FE EQU * 0022 00340000 * GEN(L 15,RD11); /* OBTAIN AND SA56524* 00350000 L 15,RD11 00360000 DS 0H 00370000 * GEN(M 14,RD10); /* STORE A SA56524* 00380000 M 14,RD10 00390000 DS 0H 00400000 * GEN(SRDL 14,2); /* RANDOM SA56524* 00410000 SRDL 14,2 00420000 DS 0H 00430000 * GEN(ST 15,RD10); /* NUMBER SA56524* 00440000 ST 15,RD10 00450000 DS 0H 00460000 * IF R6=1 THEN /* LAST DATA TO BE STORED */ 00470000 CH @6,@D2 0027 00480000 BC 07,@9FA 0027 00490000 * IF H4>'00'X THEN /* EXCESS OF MULTIPLES */ 00500000 CLI H4,X'00' 0028 00510000 BC 12,@9F9 0028 00520000 * I4=H4; /* LESS THAN A MULTIPLE */ 00530000 MVC I+3(1),H4 0029 00540000 * RDDT1(1:I)=RD10; /* DATA INTO STORAGE AREA */ 00550000 @9F9 EQU * 0030 00560000 @9FA LA @E,RD10 0030 00570000 L @1,I 0030 00580000 BCTR @1,0 0030 00590000 LR @A,@5 0030 00600000 EX @1,@MVC 0030 00610000 * R5=ADDR(RDDT2); /* NEXT STORAGE AREA */ 00620000 LA @5,4(0,@5) 0031 00630000 * END; /* DATA STORAGE COMPLETED */ 00640000 * RETURN; /* RETURN TO CALLER */ 00650000 BCT @6,@DO9FE 0032 00660000 * END; /* END RANDOM DATA GENERATOR * 00670000 @EL01 LM @E,@C,12(@D) 0034 00680000 BCR 15,@E 0034 00690000 @DATA1 EQU * 00700000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 00710000 @1 EQU 01 00720000 @2 EQU 02 00730000 @3 EQU 03 00740000 @4 EQU 04 00750000 @5 EQU 05 00760000 @6 EQU 06 00770000 @7 EQU 07 00780000 @8 EQU 08 00790000 @9 EQU 09 00800000 @A EQU 10 00810000 @B EQU 11 00820000 @C EQU 12 00830000 @D EQU 13 00840000 @E EQU 14 00850000 @F EQU 15 00860000 @D1 DC F'0' 00870000 @D2 DC H'1' 00880000 @MVC MVC 0(1,@A),0(@E) 00890000 DS 0F 00900000 @X2 DC X'1234' 00910000 DS 0D 00920000 @DATA EQU * 00930000 R1 EQU 00000001 FULLWORD POINTER REGISTER 00940000 R5 EQU 00000005 FULLWORD POINTER REGISTER 00950000 R6 EQU 00000006 FULLWORD POINTER REGISTER 00960000 R7 EQU 00000007 FULLWORD POINTER REGISTER 00970000 R8 EQU 00000008 FULLWORD POINTER REGISTER 00980000 R10 EQU 00000010 FULLWORD POINTER REGISTER 00990000 A00000 EQU 00000000 8 BYTE(S) ON WORD 01000000 RDDT1 EQU A00000+00000000 4 BYTE(S) 01010000 RDDT2 EQU A00000+00000004 4 BYTE(S) 01020000 A00001 EQU 00000000 12 BYTE(S) ON WORD 01030000 RINPA EQU A00001+00000000 FULLWORD POINTER 01040000 A00002 EQU A00001+00000004 FULLWORD POINTER 01050000 RCNT EQU A00001+00000008 FULLWORD INTEGER 01060000 A00003 EQU A00001+00000008 3 BYTE(S) 01070000 RCNT4 EQU A00001+00000011 1 BYTE(S) 01080000 I EQU * FULLWORD INTEGER 01090000 DC FL4'0' 01100000 A00004 EQU I+00000000 3 BYTE(S) 01110000 I4 EQU I+00000003 1 BYTE(S) 01120000 RD10 EQU @DATA+00000004 4 BYTE(S) ON WORD 01130000 A00005 EQU RD10+00000000 2 BYTE(S) 01140000 RD103 EQU RD10+00000002 2 BYTE(S) 01150000 ORG @DATA+00000008 01160000 A00006 EQU * FULLWORD INTEGER 01170000 DC FL4'65539' 01180000 RD11 EQU A00006+00000000 4 BYTE(S) 01190000 H4 EQU @DATA+00000012 1 BYTE(S) 01200000 ORG @DATA 01210000 DS 00000013C 01220000 @TEMPS DS 0F 01230000 @DATEND EQU * 01240000 @DO9FD EQU @EL01 01250000 END 01260000