Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Shifting number

Status
Not open for further replies.

Honza

Programmer
Joined
Jun 28, 2000
Messages
1
Location
CZ
Hello!<br><br>&nbsp;&nbsp;&nbsp;&nbsp;please, I'd like to know how to shift number left or right (similary to C++&nbsp;&nbsp;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or Pascal shl,shr). <br>I'm looking for something better than dividing and multiplying by 2.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Thanks&nbsp;&nbsp;Honza Klimes&nbsp;&nbsp;<br>(<A HREF="mailto:j_klimes@ortex.cz">j_klimes@ortex.cz</A>)
 
Honza,<br><br>Are you trying to shift binary or decimal number (or other...)?<br>Tip for decimal shifting left:<br><br>WORKING-STORAGE SECTION.<br>01 NUMB1 PIC 9(10).<br>01 NUMB11 REDEFINES NUMB1.<br>&nbsp;&nbsp;&nbsp;&nbsp;03 N11 PIC 9 OCCURS 10.<br>01 NUMB2 PIC 9(10).<br>01 NUMB21 REDEFINES NUMB2.<br>&nbsp;&nbsp;&nbsp;&nbsp;03 N21 PIC 9 OCCURS 10.<br>01 VARIAB.<br>&nbsp;&nbsp;&nbsp;&nbsp;03 K PIC 99.<br>&nbsp;&nbsp;&nbsp;&nbsp;03 J PIC 99.<br><br>...<br><br>PROCEDURE DIVISION.<br><br>&nbsp;ACCEPT NUMB1 WITH CONVERSION.<br>&nbsp;PERFORM SHIFTT VARYING K FROM 1 BY 1 UNTIL K &gt; 10.<br><br>&nbsp;DISPLAY NUMB2 WITH CONVERSION.<br><br>&nbsp;STOP RUN.<br><br>SHIFTT.<br>&nbsp;COMPUTE J = K + 1.<br>&nbsp;IF J &lt; 11<br>&nbsp;&nbsp;MOVE N11(K) TO N21(J)<br>* if you want cyclic shift you should put last (11) digit in the first place.<br>* ELSE MOVE N11(K) TO N21(1).<br>&nbsp;&nbsp;ELSE ZERO TO N21(1).<br><br><br>
 
There are hundreds of ways to do this. <br>For example:<br><br>01 original pic 9(18).<br>01 right-shift redefines original pic 9(17)v9.<br>01 original-string redefines original pic x(18).<br>....<br><br>move original to right-shift.<br><br>that creates a numeric move.<br><br>original-string = original-string(2:)<br><br>creates a leftshift, the last byte becomes blanc!<br><br>but there are endless ways to do things like this.<br>experiment with them and have fun.<br>
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top