]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/02/15 17:49:42 mclareni | |
6 | * Kernlib | |
7 | * | |
8 | * | |
9 | #include "kerngen/pilot.h" | |
10 | #if !defined(CERNLIB_QASCII) | |
11 | SUBROUTINE CHTOI(CH,I,*) | |
12 | C | |
13 | C CERN PROGLIB# M400 CHTOI .VERSION KERNFOR 4.11 850529 | |
14 | C ORIG. 29/05/84 H.RENSHALL | |
15 | C | |
16 | C SUBROUTINE WITH TWO ENTRY POINTS : | |
17 | C CHTOI - CONVERT INPUT SINGLE CHARACTER CH (OF TYPE CHARACTER) TO AN | |
18 | C OUTPUT INTEGER I VIA THE LOOK-UP TABLE STORED IN CHSTR. | |
19 | C ITOCH - CONVERT INPUT SINGLE INTEGER I TO AN OUTPUT SINGLE CHARACTER | |
20 | C CH (OF TYPE CHARACTER) VIA THE LOOK-UP TABLE STORED IN CHSTR. | |
21 | C A VALUE OUTSIDE THE ALLOWED SET OF 95 CHARACTERS RESULTS IN THE | |
22 | C ALTERNATE RETURN BEING TAKEN, WITH THE VALUE ZERO RETURNED IN I FOR | |
23 | C A CALL TO CHTOI, OR THE VALUE '?' BEING RETURNED IN CH FOR ITOCH. | |
24 | C THE INTEGER REPRESENTATIONS ARE THOSE OF 8-BIT ASCII RANGING FROM | |
25 | C 32 (FOR BLANK) TO 126 (FOR ~). SOME OF THE MORE EXOTIC CHARACTERS | |
26 | C PRODUCE STRANGE (BUT NON-FATAL) CONVERSIONS ON SOME MACHINES. | |
27 | C | |
28 | INTEGER CHMAX2 | |
29 | CHARACTER CH | |
30 | PARAMETER(CHMAX2=128) | |
31 | CHARACTER*(CHMAX2)CHSTR | |
32 | C | |
33 | C INTEGERS 0 TO 127 MAP CONSECUTIVELY INTO THE CHARACTERS STORED | |
34 | C IN CHSTR AS DEFINED BELOW. NOTE CHSTR(39:39)=' (APOSTROPHE) | |
35 | C | |
36 | DATA | |
37 | +CHSTR(32:47)/' !"#$%&''()*+,-./'/ | |
38 | +CHSTR(48:57)/'0123456789'/ | |
39 | +CHSTR(58:64)/':;<=>?@'/ | |
40 | +CHSTR(65:90)/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ | |
41 | +CHSTR(91:96)/'[\]^_`'/ | |
42 | +CHSTR(97:122)/'abcdefghijklmnopqrstuvwxyz'/ | |
43 | +CHSTR(123:126)/'{|}~'/ | |
44 | C | |
45 | I= INDEX(CHSTR(32:126),CH) | |
46 | IF(I.LT.1) RETURN 1 | |
47 | I= I + 31 | |
48 | RETURN | |
49 | C | |
50 | ENTRY ITOCH(I,CH,*) | |
51 | C SET ILLEGAL VALUE OF I TO RETURN CHARACTER '?' | |
52 | CH= CHSTR(63:63) | |
53 | IF(I.LT.32.OR.I.GT.126) RETURN 1 | |
54 | CH=CHSTR(I:I) | |
55 | RETURN | |
56 | END | |
57 | #endif |