UTIL_JSA.apl

⍝
⍝ Author: Dr. Jürgen Sauermann
⍝ Date: 2022年10月13日
⍝ Copyright: Copyright (C) 2022 by Dr. Jürgen Sauermann
⍝ License: GPL see http://www.gnu.org/licenses/gpl-3.0.en.html
⍝ Support email: bug-apl@gnu.org
⍝ Portability: L3 (GNU APL)
⍝
⍝ Purpose:
⍝ Conversion of CSV (Comma Separated Values) file to APL values
⍝
⍝ Description:
⍝ This library provides 2 functions Util_JSA∆READ and Util_JSA∆WRITE
⍝ that read 2-dimensional CSV files into APL matrices (and vice versa).
 ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
⍝ ⍝
⍝ UTIL_JSA 2022年10月13日 19:26:03 (GMT+2) ⍝
⍝ ⍝
 ⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝
∇Z←Util_JSA∆LINE2NUM B;P
 ⍝
 ⍝⍝ Return the numeric APL vector for string B (in CSV format).
 ⍝
 B←(B≠' ')/B ⍝ remove any blanks
 B←B←((','≠↑B)⍴','),B ⍝ prepend a leading comma (if needed)
 B←(-','= ̄1↑B)↓B ⍝ discard a trailing comma (if any)
 P←(+\B=',')⊂B ⍝ partition B at comma boundaries
 Z←,⊃{⊃',%f' ⎕FIO.sscanf ⍵} ̈P ⍝ sscanf all items of P
∇
∇Z←Util_JSA∆NUM_SCAN B
 ⍝
 ⍝⍝ Return the numeric APL scalar for string B (in C/C++ format).
 ⍝
 Z←'%f' ⎕FIO.sscanf B
∇
∇MATRIX←Util_JSA∆READ_CSV FILENAME
 ⍝
 ⍝⍝ Convert file FILENAME, which should contain a numeric matrix
 ⍝⍝ encoded in CSV (aka. Comma Separated Values) format, to an APL matrix
 ⍝
 ⍝ In the CSV matrix B: rows are lines, columns are separated by ASCII commas,
 ⍝ and negative values and exponents use ASCII - instead of ̄.
 ⍝
 MATRIX ← ⊃Util_JSA∆LINE2NUM ⎕FIO.read_text FILENAME ⍝ read FILENAME, covert its lines
∇
∇LEN←FILENAME Util_JSA∆WRITE_CSV MATRIX
 ⍝
 ⍝⍝ write the numeric MATRIX to a CSV text file FILENAME
 ⍝
 MATRIX←⍕MATRIX ◊ ((∧⌿' '=MATRIX)/MATRIX)←','
 MATRIX←⊂[⎕IO+1]MATRIX
 LEN←MATRIX ⎕FIO.write_text FILENAME
∇
⍝ EOF 

AltStyle によって変換されたページ (->オリジナル) /