C PROGRAM SHIFT.FT C ---------------- C C C C C OS/8 FORTRAN II SUBROUTINE TO IMPLEMENT AN INTEGER SHIFT C ------------------------------------------------------------ C C C C C SUBROUTINE SHIFT(IN,IOUT,NSHFT) C C C PETER LEMKIN C NATIONAL INSTITUTES OF HEALTH C BETHESDA, MD. 20014 C C JUNE 10, 1971 C REVISED DEC. 1, 1972 C C C C INTRODUCTION C ============ C THIS OS/8 SUBROUTINE BIT SHIFTS THE INPUT "IN" BY THE SPECIFIED C INTEGER ARGUMENT "NSHFT". THIS SHIFT PROCEDURE DOES NOT USE C EAE. C C C ARGUMENTS C ----------- C 1. IN - THE INPUT WORD TO BE SHIFTED (USED BY VALUE) C 2. IOUT - THE RESULT OF THE SHIFT ON "IN". C 3. NSHFT - THE NUMBER AND DIRECTION OF THE BIT SHIFT. C C C OPERATION C ---------- C IF NSHFT IS: C =0, IOUT=IN C >0, IOUT IS IN SHIFTED RIGHT NSHFT BITS, ZERO FILLED C FROM THE LEFT. C <0, IOUT IS IN SHIFTED LEFT NSHFT BITS, ZERO FILLED C FROM THE RIGHT. C C C I=IN IF(NSHFT)10,100,20 C C SHIFT LEFT 10 N=-NSHFT 12 DO 15 J=1,N S CLA CLL S TAD \I S RAL S DCA \I 15 CONTINUE C C C EXIT 100 IOUT=I RETURN C C C SHIFT RIGHT 20 DO 25 J=1,NSHFT S CLA CLL S TAD \I S RAR S DCA \I 25 CONTINUE GOTO 100 C C END