-
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathREADEBCDIC
40 lines (33 loc) · 1.86 KB
/
READEBCDIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
(FILECREATED " 9-Nov-89 15:32:46" {ICE}<DENBER>LISP>LYRIC>READEBCDIC.\;1 1847
|changes| |to:| (VARS READEBCDICCOMS)
(FNS READEBCDIC))
(PRETTYCOMPRINT READEBCDICCOMS)
(RPAQQ READEBCDICCOMS ((FNS READEBCDIC)))
(DEFINEQ
(READEBCDIC
(LAMBDA (INFILE OUTFILE ADDCR) (* \; "Edited 9-Nov-89 15:31 by MJD")
(* |;;| "Converts EBCDIC to ASCII. If ADDCR is T, adds a CR after every 80 chars.")
(PROG (TRTAB TRLIST SPCHARS LCASE UCASE NUMBERS INSTREAM OUTSTREAM (COL 0))
(SETQ TRTAB (ARRAY 256 NIL " " 0))
(SETQ SPCHARS " .<(+|& !$*);~ / ,%_>? :#@'=\" ")
(SETQ LCASE "abcdefghi jklmnopqr stuvwxyz ")
(SETQ UCASE "ABCDEFGHI JKLMNOPQR STUVWXYZ ")
(SETQ NUMBERS "0123456789")
(SETQ TRLIST (UNPACK (CONCAT SPCHARS LCASE UCASE NUMBERS)))
(|for| I |from| 0 |to| 31 |do| (SETA TRTAB I (CHARACTER I)))
(|for| I |from| 64 |as| CHAR |in| TRLIST |do| (SETA TRTAB I CHAR))
(SETQ INSTREAM (OPENSTREAM INFILE 'INPUT 'OLD))
(SETQ OUTSTREAM (OPENSTREAM OUTFILE 'OUTPUT 'NEW))
(|until| (EOFP INSTREAM) |do| (PRIN1 (ELT TRTAB (BIN INSTREAM))
OUTSTREAM)
(ADD COL 1)
(IF (EQ COL 80)
THEN (SETQ COL 0)
(AND ADDCR (TERPRI OUTSTREAM))))
(CLOSEF INSTREAM)
(CLOSEF OUTSTREAM))))
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (312 1824 (READEBCDIC 322 . 1822)))))
STOP