앞선글에 이어쓸려고 하였으나 오류가 발생하여 불가피 하게 글을 나누었습니다.(죄송합니다.)
앞선글에서 사용할
2진수를 10진수로
10진수를 2진수로 변환하는
Macro를 만들어 보았습니다.
define MDEC2BIN.
* Decimal To Binary.
* &1 AS integer : 2진수로 돌려줄 길이를 알려준다.
* &2 AS integer : 10진수 값을지정한다. [Source]
* &3 AS String : 10진수 2진수로 변환한 값을 알려준다. [Result]
DATA : mlv_i1 type i,
mlv_i2 type i,
mlv_i3 type i,
mlv_i4 type i,
mlv_i5 type i,
mlv_p1 type p DECIMALS 1,
mlv_c1 type c,
mlv_i6 type i.
&3 = ''.
mlv_i1 = &2.
while 1 = 1.
mlv_i2 = mlv_i1 mod 2.
mlv_c1 = mlv_i2.
CONDENSE mlv_c1.
mlv_p1 = mlv_i1 / 2 .
mlv_i3 = floor( mlv_p1 ).
CONCATENATE mlv_c1 &3 into &3.
if mlv_p1 < 1 .
exit.
else.
mlv_i1 = mlv_i3.
endif.
ENDwhile.
mlv_i1 = strlen( &3 ).
mlv_i1 = &1 - mlv_i1.
do mlv_i1 times.
CONCATENATE '0' &3 into &3.
enddo.
end-OF-DEFINITION.
DEFINE MBIN2DEC.
DATA : nlv_i1 type i,
nlv_i2 type i,
nlv_i3 type i,
nlv_i4 type i,
nlv_i5 type i,
nlv_c1 type c.
CONDENSE &1.
nlv_i1 = strlen( &1 ).
nlv_i2 = nlv_i1.
&2 = 0.
do nlv_i1 times.
nlv_i3 = nlv_i2 - sy-index.
nlv_c1 = &1+nlv_i3(1).
nlv_i4 = nlv_c1.
nlv_i5 = sy-index - 1.
nlv_i5 = nlv_i4 * ( 2 ** nlv_i5 ).
&2 = &2 + nlv_i5.
ENDdo.
END-OF-DEFINITION.
자료 감사합니다.