home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / nan_news / vol3 / no6 / ebcdic2.prg next >
Text File  |  1989-05-01  |  8KB  |  233 lines

  1. * Program: EBCDIC2.prg
  2. * Authors: Gerry Braganza and Diane Lask
  3. * Version: Clipper Summer '87
  4. *
  5. * Copyright (c) 1989 Nantucket Corp.  All Rights Reserved.
  6. *
  7. * Note(s): Initialize Extended Binary Coded Decimal Interchange
  8. *          Code (IBM's EBCDIC) table to corresponding American
  9. *          Standard Code for Information Interchange (ASCII) -
  10. *          ANSI X3.4.
  11.  
  12. PUBLIC EBCDIC
  13.  
  14. EBCDIC = CHR(0)+;       && NULL: Space filler character.
  15.          CHR(1)+;       && SCH : ^A  Start of header.
  16.          CHR(2)+;       && STX : ^B  Start of text.
  17.          CHR(3)+;       && ETX : ^C  End of text.
  18.          ' '+;          && PF  : No ASCII value.
  19.          CHR(9)+;       && HT  : ^I  Horizontal tab.
  20.          ' '+;          && LC  : No ASCII value.
  21.          CHR(127)+;     && DEL : Delete.
  22.          ' '+;          && GE  : No ASCII value.
  23.          ' '+;          && RLF : No ASCII value.
  24.          ' '+;          && SMM : No ASCII value.
  25.          CHR(11)+;      && VT  : ^K  Vertical tab.
  26.          CHR(12)+;      && FF  : ^L  Form Feed.
  27.          CHR(13)+;      && CR  : ^M  Carriage return.
  28.          CHR(14)+;      && SO  : ^N  Shift out.
  29.          CHR(15)+;      && SI  : ^O  Shift in.
  30.          CHR(16)+;      && DLE : ^P  Data link escape.
  31.          CHR(17)+;      && DC1 : ^Q  Device control 1.
  32.          CHR(18)+;      && DC2 : ^R  Device control 2.
  33.          ' '+;          && TM  : No ASCII value.
  34.          ' '+;          && RES : No ASCII value.
  35.          ' '+;          && NL  : No ASCII value.
  36.          CHR(8)+;       && BS  : ^H  Backspace.
  37.          ' '+;          && IL  : No ASCII value.
  38.          ' '+;          && CAN : No ASCII value.
  39.          CHR(25)+;      && EM  : ^ Y End of medium.
  40.          ' '+;          && CC  : No ASCII value.
  41.          ' '+;          && CU1 : No ASCII value.
  42.          ' '+;          && IFS : No ASCII value.
  43.          ' '+;          && IGS : No ASCII value.
  44.          ' '+;          && IRS : No ASCII value.
  45.          ' '+;          && IUS : No ASCII value.
  46.          ' '+;          && DS  : No ASCII value.
  47.          ' '+;          && SOS : No ASCII value.
  48.          CHR(28)+;      && FS  : ^ \  File Separator.
  49.          ' '+;          && Reserved.
  50.          ' '+;          && BYP : No ASCII value.
  51.          CHR(10)+;      && LF  : ^J   Line feed.
  52.          CHR(23)+;      && ETB : ^W   Up/down to line.
  53.          CHR(27)+;      && ESC : Left Arr; end trans blo
  54.          ' '+;          && Reserved.
  55.          ' '+;          && Reserved.
  56.          ' '+;          && SM  : No ASCII value.
  57.          ' '+;          && CU2 : No ASCII value.
  58.          ' '+;          && Reserved.
  59.          CHR(5)+;       && ENQ : ^E  Inquiry.
  60.          CHR(6)+;       && ACK : ^F  Acknowledgement.
  61.          CHR(7)+;       && BEL : ^G  Bell.
  62.          ' '+;          && Reserved.
  63.          ' '+;          && Reserved.
  64.          CHR(22)+;      && SYN : ^V  Synchronous idle.
  65.          ' '+;          && Reserved.
  66.          ' '+;          && PN  : No ASCII value.
  67. CHR(30)+;      && RS  : ^^  Record Separator.
  68. ' '+;          && UC  : No ASCII value.
  69. CHR(4)+;       && EOT : ^D  End of trans.
  70. ' '+;          && Reserved.
  71. ' '+;          && Reserved.
  72. ' '+;          && Reserved.
  73. ' '+;          && CU3
  74. CHR(20)+;      && DC4 : ^T  Device control 4.
  75. CHR(21)+;      && NAK : ^U  Negative acknow.
  76. ' '+;          && Reserved.
  77. CHR(26)+;      && SUB : ^Z  Substitute.
  78. ' '+;          && SP  : No ASCII value.
  79. ' '+;          && Reserved.
  80. ' '+;          && Reserved.
  81. ' '+;          && Reserved.
  82. ' '+;          && Reserved.
  83. ' '+;          && Reserved.
  84. ' '+;          && Reserved.
  85. ' '+;          && Reserved.
  86. ' '+;          && Reserved.
  87. ' '+;          && Reserved.
  88. ' '+;          && (cent): No ASCII value.
  89. CHR(46)+;      && .   : Period.
  90. CHR(60)+;      && <   : Less than sign.
  91. CHR(40)+;      && (   : Opening parenthesis.
  92. CHR(43)+;      && +   : Plus sign.
  93. CHR(124)+;     && |   : Vertical line.
  94. CHR(38)+;      && &   : Ampersand.
  95. ' '+;          && Reserved.
  96. ' '+;          && Reserved.
  97. ' '+;          && Reserved.
  98. ' '+;          && Reserved.
  99. ' '+;          && Reserved.
  100. ' '+;          && Reserved.
  101. ' '+;          && Reserved.
  102. ' '+;          && Reserved.
  103. ' '+;          && Reserved.
  104. CHR(33)+;      && !   : Exclamation point.
  105. CHR(36)+;      && $   : Dollar sign.
  106. CHR(42)+;      && *   : Asterisk.
  107. CHR(41)+;      && )   : Closing parenthesis.
  108. CHR(59)+;      && ;   : Semicolon.
  109. ' '+;          &&     : No ASCII value.
  110. CHR(45)+;      && -   : Hyphen or minus sign.
  111. CHR(47)+;      && /   : Slash.
  112. ' '+;          && Reserved.
  113. ' '+;          && Reserved.
  114. ' '+;          && Reserved.
  115. ' '+;          && Reserved.
  116. ' '+;          && Reserved.
  117. ' '+;          && Reserved.
  118. ' '+;          && Reserved.
  119. ' '+;          && Reserved.
  120. CHR(124)+;     && |   : Vertical line.
  121. CHR(44)+;      && ,   : Comma.
  122. CHR(37)+;      && %   : Percent sign.
  123. CHR(95)+;      && _   : Underscore.
  124. CHR(62)+;      && >   : Greater than sign.
  125. CHR(63)+;      && ?   : Question mark.
  126. ' '+;          && Reserved.
  127. ' '+;          && Reserved.
  128. ' '+;          && Reserved.
  129. ' '+;          && Reserved.
  130. ' '+;          && Reserved.
  131. ' '+;          && Reserved.
  132. ' '+;          && Reserved.
  133. ' '+;          && Reserved.
  134. ' '+;          && Reserved.
  135. ' '+;          && Reserved.
  136. CHR(58)+;      && :   : Colon.
  137. CHR(35)+;      && #   : Number sign.
  138. CHR(64)+;      && @   : At sign.
  139. CHR(39)+;      && '   : Apostrophe.
  140. CHR(61)+;      && =   : Equal sign.
  141. CHR(34)+;      && "   : Quotation mark.
  142. ' '+;          && Reserved.
  143. [abcdefghi]+;  && Lower case characters.
  144. ' '+;          && Reserved.
  145. ' '+;          && Reserved.
  146. ' '+;          && Reserved.
  147. ' '+;          && Reserved.
  148. ' '+;          && Reserved.
  149. ' '+;          && Reserved.
  150. ' '+;          && Reserved.
  151. [jklmnopqr]+;  && Lower case characters.
  152. ' '+;          && Reserved.
  153. ' '+;          && Reserved.
  154. ' '+;          && Reserved.
  155. ' '+;          && Reserved.
  156. ' '+;          && Reserved.
  157. ' '+;          && Reserved.
  158. ' '+;          && Reserved.
  159. CHR(126)+;     && ~   : Tilde.
  160. [stuvwxyz]+;   && Lower case characters.
  161. ' '+;          && Reserved.
  162. ' '+;          && Reserved.
  163. ' '+;          && Reserved.
  164. ' '+;          && Reserved.
  165. ' '+;          && Reserved.
  166. ' '+;          && Reserved.
  167. ' '+;          && Reserved.
  168. ' '+;          && Reserved.
  169. ' '+;          && Reserved.
  170. ' '+;          && Reserved.
  171. ' '+;          && Reserved.
  172. ' '+;          && Reserved.
  173. ' '+;          && Reserved.
  174. ' '+;          && Reserved.
  175. ' '+;          && Reserved.
  176. ' '+;          && Reserved.
  177. ' '+;          && Reserved.
  178. ' '+;          && Reserved.
  179. ' '+;          && Reserved.
  180. ' '+;          && Reserved.
  181. ' '+;          && Reserved.
  182. ' '+;          && Reserved.
  183. CHR(123)+;     && {   : Opening brace.
  184. [ABCDEFGHI]+;  && Upper case characters.
  185. ' '+;          && Reserved.
  186. ' '+;          && Reserved.
  187. ' '+;          && No ASCII value.
  188. ' '+;          && Reserved.
  189. ' '+;          && No ASCII value.
  190. ' '+;          && Reserved.
  191. CHR(125)+;     && }   : Closing brace.
  192. [JKLMNOPQR]+;  && Upper case characters.
  193. ' '+;          && Reserved.
  194. ' '+;          && Reserved.
  195. ' '+;          && Reserved.
  196. ' '+;          && Reserved.
  197. ' '+;          && Reserved.
  198. ' '+;          && Reserved.
  199. CHR(92)+;      && \   : Backward slash.
  200. ' '+;          && Reserved.
  201. [STUVWXYZ]+;   && Upper case characters.
  202. ' '+;          && Reserved.
  203. ' '+;          && Reserved.
  204. ' '+;          && No ASCII value.
  205. ' '+;          && Reserved.
  206. ' '+;          && Reserved.
  207. ' '+;          && Reserved.
  208. [0123456789]+; && numerics
  209. CHR(124)+;     && |   : Vertical line.
  210. ' '+;          && Reserved.
  211. ' '+;          && Reserved.
  212. ' '+;          && Reserved.
  213. ' '+;          && Reserved.
  214. ' '            && EO  : No ASCII value.
  215.  
  216.  
  217. USE Test
  218. * Message while indexing.
  219. @ 23, 0 SAY "Indexing based on EBCDIC code..."
  220. INDEX ON index_eb(name) TO ebindex
  221. @ 23, 0
  222.  
  223. FUNCTION index_eb
  224. PARAMETERS asc_string
  225. PRIVATE i
  226.  
  227. FOR i = 1 TO LEN(asc_string)
  228.    asc_string = STUFF(asc_string, i, 1,;
  229.      CHR(AT(SUBSTR(asc_string, i, 1),EBCDIC)))
  230. NEXT
  231.  
  232. RETURN(asc_string)
  233.