C C C B I N H E X C C BINARY TO HEX (ASCII) ROUTINE C C THIS ROUTINE IS USED TO CONVERT A BINARY NUMBER TO HEXADECIMAL FORM C ( ACTUALLY ITS ASCII REPRESENTATION ) . IT IS DESIGNED TO WORK ON A C 32 BIT INTEGER. NOTE THAT IF YOUR PARTICULAR VERSION OF FORTRAN HAS C HEXADECIMAL OUTPUT FORMAT ( IE. IBM MACHINES ) THIS ROUTINE MAY NOT C BE REQUIRED. THE CALLING SEQUENCE IS AS FOLLOWS: C C CALL BINHEX ( BVALUE , HVALUE , CHAR ) C C WHERE C BVALUE- INTEGER CONTAINING THE BINARY VALUE THAT IS TO BE C CONVERTED. C HVALUE- BYTE ARRAY WHICH , UPON RETURN , CONTAINS THE ASCII C REPRESENTATION OF THE HEX VALUE . THE DIGITS ARE PACKED C SO THAT THEY WILL BE IN THE CORRECT ORDER WHEN OUTPUT C USING AN "A" TYPE FORMAT SPECIFICATOR. C CHAR- INTEGER VARIABLE CONTAINING A COUNT OF THE NUMBER OF HEX C DIGITS TO BE CONVERTED ( NOTE 1 BYTE = 2 DIGITS ). C SUBROUTINE BINHEX ( BVALUE , HVALUE , CHAR ) BYTE HVALUE(4) INTEGER CHAR INTEGER*4 BVALUE, VALUE, VAL, BASE D WRITE (4,1) BVALUE,CHAR D 1 FORMAT (' BINHEX START, BVALUE = ',I20,' FOR ', D $ I4,' HEX DIGITS') BASE = 16**(CHAR-1) VAL = 65536 IF (CHAR.EQ.2) VAL = 256 VALUE = MOD(BVALUE,VAL) DO 10 I = 1,CHAR VAL = VALUE/BASE HVALUE(I) = VAL+48 IF (HVALUE(I).GT.'9') HVALUE(I) = HVALUE(I)+7 VALUE = VALUE-VAL*BASE BASE = BASE/16 10 CONTINUE D WRITE (4,2) HVALUE D 2 FORMAT (' BINHEX END, HVALUE = ',4A1) RETURN END