Fixed length records: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: Add a Perl 6 example)
(Added Neko)
Line 486:
text2block("block.txt", "block2.dat")
}</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}}==