back

A Quick Universe Snippet

2022-04-06

A quick snippet to select a file and read in every record. I'm using this to generate a file of ids and their descriptions. Doing this in BASIC would be quite easy as well, it would actually be identical for the most part but I can't catch the output as easily as just running the script with stout pointed to a file.

const mv = require("pick-mv");
const Universe = require("pick-universe");
const uv = new Universe("localhost", "username", "password", "/path/to/account");

uv.StartSession();

const INV = uv.Open("INVENTORY-FILE");
uv.Select(INV);

while (true) {
    let id = uv.ReadNext();
    if (id === null) break;
    let record = mv.MVMatrix(uv.Read(id, INV));
    console.log(id, record[[1]]);
}

uv.EndAllSessions();

The core code in BASIC, line wise, they end up very similar but performance wise, huge difference. I had to run the javascript version for 2 minutes versus the BASIC version that ran in a few seconds.

OPEN "INVENTORY-FILE" TO INV ELSE STOP

SELECT INV

LOOP
    READNEXT ID ELSE ID = ''
WHILE ID # '' DO
    READ RECORD FROM INV, ID ELSE RECORD = ''
REPEAT

It would be worth generating a vim snippet to automatically get hints for the functions. I also need to profile if it's worth doing this readnext in javascript or if its better to do it in C and then do the MVMatrix in javascript land.