Gegenüber der von SAM erwarteten Datenstruktur sind textbasierte Daten von Node-Files, abgesehen von Zeilenvorschubzeichen (Line Feed, LF), die einzelne Datensätze von einander trennen, strukturlos. Die Zugriffsmethode SAM benötigt deshalb einen „Übersetzer“, den SAM-Konverter, der die SAM-spezifische Verarbeitung einer BS2000-Plattendatei auf die Node-File-Verarbeitung abbildet. Der SAM-Konverter ist Bestandteil des Net-Client.
Der SAM-Konverter modifiziert einen logischen SAM-Block während des Schreibens bzw. Übertragens von BS2000 auf Net-Storage wie folgt:
Das Blockkontrollfeld (CF), das Datenlängenfeld (DL) und die Satzlängenfelder (RL) werden entfernt.
In Abhängigkeit vom Dateiattribut NET-CODED-CHAR-SET wird für die Daten eine Code-Konvertierung vorgenommen (siehe Abschnitt „Zeichensatz für Node-Files").
Nach jedem Datensatz wird ein zum Coded-Character-Set (CCS) passender Zeilenvorschub (LF) eingefügt.
Umgekehrt baut der SAM-Konverter beim Lesen der Daten logische SAM-Datenblöcke so auf, als ob die Zugriffsmethode SAM die Daten von einer BS2000-Platte lesen würde:
Zu Beginn jedes logischen Blockes wird das Blockkontrollfeld und das Datenlängenfeld eingefügt.
Die Datensätze aus dem Node-File werden um Satzlängenfelder erweitert.
Bei jedem OPEN analysiert der SAM-Konverter das SAM-Node-File und erstellt eine Node-File-Positionierungsliste, in der die Zuordnung der virtuellen logischen BS2000-Blocknummern zu den realen Byte-Positionen innerhalb der Datei auf dem Net-Storage vermerkt werden. Dabei wird gleichzeitig die Dateigröße in PAM-Seiten (LPP) ermittelt und an BS2000 zurückgemeldet. Mit Hilfe dieser Liste kann der SAM-Konverter beliebige logische Blöcke der Datei lesen und aufbereitet an BS2000 senden (z.B. Anzeige eines bestimmten Satzes bei SHOW-FILE). Diese Liste ist auch Voraussetzung für einen OPEN EXTEND oder REVERSE.
Die Positionierungsliste existiert pro geöffneter Datei temporär bis zum CLOSE. Bei sehr großen Dateien kann der Aufbau der Liste eine gewisse Zeit erfordern und auch größere Hauptspeicher-Ressourcen des Net-Clients in Anspruch nehmen. Wenn extrem große und viele Dateien gleichzeitig verarbeitet werden, kann es am Net-Client zu Ressourcen-Engpässen kommen, die mit entsprechenden Returncodes beantwortet werden.
Hinweis zur Verwendung von RELSE
Der Aufruf von RELSE schließt den aktuellen logischen Block und startet einen neuen logischen Block. Die Blocknummer der Wiedergewinnungsadresse wird um 1 erhöht und die Satznummer wird auf 0 zurückgesetzt. Die Positionierungsliste des Net-Client erhält dabei einen weiteren Eintrag, so dass diese Stelle wie bei der SAM-Verarbeitung auf Public-Space als Beginn eines logischen Blocks später wieder gefunden werden kann (SETL).
Bei SAM-Node-Files werden die Daten aber tatsächlich nicht blockorientiert sondern lückenlos hintereinander geschrieben. Sobald bei der Verarbeitung eines SAM-Node-Files mindestens ein RELSE verwendet wird, sind nach Schließen und erneutem Öffnen der Datei die gespeicherten Wiedergewinnungsadressen unbrauchbar, da sie ggf. von der Node-File-Positionierungsliste abweichen.