* * $Id$ * * $Log$ * Revision 1.1.1.1 1996/02/15 17:49:42 mclareni * Kernlib * * #include "kerngen/pilot.h" #if !defined(CERNLIB_QASCII) SUBROUTINE CHTOI(CH,I,*) C C CERN PROGLIB# M400 CHTOI .VERSION KERNFOR 4.11 850529 C ORIG. 29/05/84 H.RENSHALL C C SUBROUTINE WITH TWO ENTRY POINTS : C CHTOI - CONVERT INPUT SINGLE CHARACTER CH (OF TYPE CHARACTER) TO AN C OUTPUT INTEGER I VIA THE LOOK-UP TABLE STORED IN CHSTR. C ITOCH - CONVERT INPUT SINGLE INTEGER I TO AN OUTPUT SINGLE CHARACTER C CH (OF TYPE CHARACTER) VIA THE LOOK-UP TABLE STORED IN CHSTR. C A VALUE OUTSIDE THE ALLOWED SET OF 95 CHARACTERS RESULTS IN THE C ALTERNATE RETURN BEING TAKEN, WITH THE VALUE ZERO RETURNED IN I FOR C A CALL TO CHTOI, OR THE VALUE '?' BEING RETURNED IN CH FOR ITOCH. C THE INTEGER REPRESENTATIONS ARE THOSE OF 8-BIT ASCII RANGING FROM C 32 (FOR BLANK) TO 126 (FOR ~). SOME OF THE MORE EXOTIC CHARACTERS C PRODUCE STRANGE (BUT NON-FATAL) CONVERSIONS ON SOME MACHINES. C INTEGER CHMAX2 CHARACTER CH PARAMETER(CHMAX2=128) CHARACTER*(CHMAX2)CHSTR C C INTEGERS 0 TO 127 MAP CONSECUTIVELY INTO THE CHARACTERS STORED C IN CHSTR AS DEFINED BELOW. NOTE CHSTR(39:39)=' (APOSTROPHE) C DATA +CHSTR(32:47)/' !"#$%&''()*+,-./'/ +CHSTR(48:57)/'0123456789'/ +CHSTR(58:64)/':;<=>?@'/ +CHSTR(65:90)/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ +CHSTR(91:96)/'[\]^_`'/ +CHSTR(97:122)/'abcdefghijklmnopqrstuvwxyz'/ +CHSTR(123:126)/'{|}~'/ C I= INDEX(CHSTR(32:126),CH) IF(I.LT.1) RETURN 1 I= I + 31 RETURN C ENTRY ITOCH(I,CH,*) C SET ILLEGAL VALUE OF I TO RETURN CHARACTER '?' CH= CHSTR(63:63) IF(I.LT.32.OR.I.GT.126) RETURN 1 CH=CHSTR(I:I) RETURN END #endif