Fixed length records: Difference between revisions

Content added Content deleted
(→‎{{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}}==