Nogen gange skal jeg editere et VB dataset med en ret stor LRECL. Desværre skifter EDIT til browse mode, fordi der ikke er nok storage/memory til rådighed for min TSO session. Det irriterende er, at den samlede størrelse målt i bytes af VB datasettet sagtens kan behandles i en EDIT session. Problemet er bare, at EDIT afsætter plads til, at hver eneste record er så lang som LRECL angiver, og derfor skifter EDIT til BROWSE mode.
For at behandle datasettet med EDIT er jeg derfor nødt til at kopiere data fra VB datasettet over i et andet VB dataset med en LRECL svarende til den længste record i datasettet. Men hvordan finder man lige den længste record i et VB dataset. Endnu en gang findes der en nem løsning med SORT:
SORT medtager for VB datasets de første fire bytes i en record, som ingen andre programmer gider beskæftige sig med. De to første bytes af disse fire bytes er tilfældigvis selve recordens længde. Med denne oplysning i baghovedet er det let at få ovenstående ide. Datasettet MY.LONGEST.RECORD indeholder efter eksekvering kun en record, og det er netop den længste. Jeg går herefter i BROWSE på dette dataset og laver en FIND P'=' LAST. Så har jeg fundet længden på den længste record. Så er det bare at håbe på, at den er en del kortere end LRECL, så man kan kopiere data fra MY.VB.DATASET over i et andet dataset med en LRECL, der passer til den længste record. Nu prøver jeg så, om jeg kan gå i EDIT på det nye dataset, uden at EDIT skifter til BROWSE mode.
Bemærk i øvrigt tricket med at gå i BROWSE på MY.LONGEST.RECORD. Hvis du går i EDIT, så finder FIND P'=' LAST den sidste af de blanke, som EDIT padder recorden med for at få en record med LRECL, og så er missionen jo ikke lykkedes.