1 2# CHGLIB を移植するときの注意 3 4オリジナルのソースでは, コード系の依存性をなくすために大文字列と小文字 5列をデータ文で与えて互いの対応関係を調べている. このチェックはかなり時 6間を要するので, ASCII コード系においては第2のプログラムのように, また 7EBCDIC コード系においては第3のプログラムのように書き換えると速くなる. 8移植に際しては, 計算機のコード系を知った上で適切なものを選ぶこと. 9 10なお, このパッケージでは ASCII コード系に対応するものを標準としている. 11 12*----------------------------------------------------------------------- 13* CHGLIB (ORIGINAL) 14*----------------------------------------------------------------------- 15* CUPPER 16*----------------------------------------------------------------------- 17 SUBROUTINE CUPPER(CH) 18 19 CHARACTER CH*(*) 20 21 CHARACTER CUP*26,CLW*26 22 23 EXTERNAL INDXCF 24 25 DATA CUP/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ 26 DATA CLW/'abcdefghijklmnopqrstuvwxyz'/ 27 28 29 LCH=LEN(CH) 30 DO 10 I=1,LCH 31 IDX=INDXCF(CLW,26,1,CH(I:I)) 32 IF (IDX.NE.0) THEN 33 CH(I:I)=CUP(IDX:IDX) 34 END IF 35 10 CONTINUE 36 37 END 38*----------------------------------------------------------------------- 39* CLOWER 40*----------------------------------------------------------------------- 41 SUBROUTINE CLOWER(CH) 42 43 CHARACTER CH*(*) 44 45 CHARACTER CUP*26,CLW*26 46 47 EXTERNAL INDXCF 48 49 DATA CUP/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ 50 DATA CLW/'abcdefghijklmnopqrstuvwxyz'/ 51 52 53 LCH=LEN(CH) 54 DO 10 I=1,LCH 55 IDX=INDXCF(CUP,26,1,CH(I:I)) 56 IF (IDX.NE.0) THEN 57 CH(I:I)=CLW(IDX:IDX) 58 END IF 59 10 CONTINUE 60 61 END 62*----------------------------------------------------------------------- 63* CHGLIB FOR ASCII CODE 64*----------------------------------------------------------------------- 65* CUPPER 66*----------------------------------------------------------------------- 67 SUBROUTINE CUPPER(CH) 68 69 CHARACTER CH*(*) 70 71 72 LCH=LEN(CH) 73 DO 10 I=1,LCH 74 IDX=ICHAR(CH(I:I)) 75 IF (97.LE.IDX .AND. IDX.LE.122) THEN 76 CH(I:I)=CHAR(IDX-32) 77 END IF 78 10 CONTINUE 79 80 END 81*----------------------------------------------------------------------- 82* CLOWER 83*----------------------------------------------------------------------- 84 SUBROUTINE CLOWER(CH) 85 86 CHARACTER CH*(*) 87 88 89 LCH=LEN(CH) 90 DO 10 I=1,LCH 91 IDX=ICHAR(CH(I:I)) 92 IF (65.LE.IDX .AND. IDX.LE.90) THEN 93 CH(I:I)=CHAR(IDX+32) 94 END IF 95 10 CONTINUE 96 97 END 98*----------------------------------------------------------------------- 99* CHGLIB FOR EBCDIC CODE (by K. Ishioka) 100*----------------------------------------------------------------------- 101* CUPPER 102*----------------------------------------------------------------------- 103 SUBROUTINE CUPPER(CH) 104 105 CHARACTER CH*(*) 106 LOGICAL LIF 107 108 109 LCH=LEN(CH) 110 DO 10 I=1,LCH 111 IDX=ICHAR(CH(I:I)) 112 LIF= (129.LE.IDX .AND. IDX.LE.137) 113 & .OR.(145.LE.IDX .AND. IDX.LE.153) 114 & .OR.(162.LE.IDX .AND. IDX.LE.169) 115 IF(LIF) CH(I:I)=CHAR(IDX+64) 116 10 CONTINUE 117 118 END 119*----------------------------------------------------------------------- 120* CLOWER 121*----------------------------------------------------------------------- 122 SUBROUTINE CLOWER(CH) 123 124 CHARACTER CH*(*) 125 LOGICAL LIF 126 127 128 LCH=LEN(CH) 129 DO 10 I=1,LCH 130 IDX=ICHAR(CH(I:I)) 131 LIF= (193.LE.IDX .AND. IDX.LE.201) 132 & .OR.(209.LE.IDX .AND. IDX.LE.217) 133 & .OR.(226.LE.IDX .AND. IDX.LE.233) 134 IF(LIF) CH(I:I)=CHAR(IDX-64) 135 10 CONTINUE 136 137 END 138