Fixed length records: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Add a Perl 6 example) |
(Added Neko) |
||
Line 486: | Line 486: | ||
text2block("block.txt", "block2.dat") |
text2block("block.txt", "block2.dat") |
||
}</lang> |
}</lang> |
||
=={{header|Neko}}== |
|||
<lang ActionScript>/** |
|||
fixed length records, in Neko |
|||
*/ |
|||
var LRECL = 80 |
|||
var reverse = function(s) { |
|||
var len = $ssize(s) |
|||
if len < 2 return s |
|||
var reverse = $smake(len) |
|||
var pos = 0 |
|||
while len > 0 $sset(reverse, pos ++= 1, $sget(s, len -= 1)) |
|||
return reverse |
|||
} |
|||
var file_open = $loader.loadprim("std@file_open", 2) |
|||
var file_read = $loader.loadprim("std@file_read", 4) |
|||
var file_write = $loader.loadprim("std@file_write", 4) |
|||
var file_close = $loader.loadprim("std@file_close", 1) |
|||
var input = file_open("infile.dat", "r") |
|||
var output = file_open("outfile.dat", "w") |
|||
var len |
|||
var pos = 0 |
|||
var record = $smake(LRECL) |
|||
while true { |
|||
try { |
|||
len = file_read(input, record, pos, LRECL) |
|||
if len != LRECL $throw("Invalid read") |
|||
len = file_write(output, reverse(record), pos, LRECL) |
|||
if len != LRECL $throw("Invalid read") |
|||
} catch a break; |
|||
} |
|||
file_close(input) |
|||
file_close(output)</lang> |
|||
{{out}} |
|||
<pre> |
|||
prompt$ dd if=infile.txt cbs=80 conv=block status=none of=infile.dat |
|||
prompt$ nekoc fixed-length.neko |
|||
prompt$ neko fixed-length |
|||
prompt$ dd if=outfile.dat cbs=80 conv=unblock status=none |
|||
8.........7.........6.........5.........4.........3.........2.........1...1 eniL |
|||
2 eniL |
|||
3 eniL |
|||
4 eniL |
|||
6 eniL |
|||
7 eniL |
|||
............................................................8 enil detnednI |
|||
NIGRAM TR 9 eniL |
|||
</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |