Ken Hirsch <[log in to unmask]> wrote in message news:<[log in to unmask]>... > From: "Braun Brelin" <[log in to unmask]> > > > > Oops, that's supposed to be a "4", not an 8. basically, the keys are > usually > > 7 digits long (like 1951423). I'm unsure if I'm supposed to add in the > "01" or > > not, so, I've tried it both ways, neither of which works... > > > > Braun Brelin > > Your saying "4", not 8, above confuses me... I'm not sure what it refers > to. > > From your initial message I understood that the key is 8 bytes long, the > first byte is ascii "0" (hex 30, decimal 48), the second byte is "1" (hex > 31, decimal 49), followed by 6 bytes encoding a 12-digit decimal number in > unsigned packed decimal format. > > If you're not sure, you can check the data that is currently in the > database. E.g., in SUPRTOOL you can do a LIST HEX. I'm not sure if you can > do that in QUIZ, but you can save a record in a file using QUIZ, then do an > FCOPY IN=file;OUT=;HEX to see the bytes. > > If I understand correctly, then this code will work: > > > sub packdec { > my ($item, $length) = @_; > $item = ('0' x ($length - length($item))).$item; > return pack("H$length",$item); > } > > my $key = "01" . packdec(1951423, 12); > > > This will produce an eight byte string, where the bytes written out in hex > are: > 30 31 00 00 01 95 14 23 > > * To join/leave the list, search archives, change list settings, * > * etc., please visit http://raven.utc.edu/archives/hp3000-l.html * Well, I don't have any clue on Perl - but if you want to extract & transfer unpacked data.. you can use DEFINE the packed in SUPRTOOL appropriately and then use OUTPUT <filename>, ASCII or OUTPUT <filename>, DISPLAY to get the full key... Roshan * To join/leave the list, search archives, change list settings, * * etc., please visit http://raven.utc.edu/archives/hp3000-l.html *