22-V-1987.

Датум је приближан, а прича се пружа на неколико недеља, вероватно до дубоко у јун.

Апликација за стамбеној задрузи је полако расла. Не толико у коду, није ту било много посла, осим што је требало да измислим поштанске бројеве и издвојим чланове из других општина у засебне табеле - хтели су да оснују подручне задруге по општинама. Јер је чланство расло.

Што је била омања победа за мене, јер сам од почетка хтео табелу поштанских бројева, ал' Радоја рече да не претерујем. А био сам баш новајлија, то је било можда трећег дана на тезги, пре скоро годину. Е сад је требало да их покупим по свим могућим називима места и доделим им поштанске бројеве. Нашао сам једно место, са називом од две речи, написано на седам начина - и то све великим словима (све се куцало великим словима, заостатак са педепеа, на Партнеру је Мали мекани кобол ладно примао мала). Нешто типа "Прво Друго", "Прво Др.", "Пр.Друго", "Пр. Друго", "П.Друго", "П. Друго", "Прво Д.". Јеботе. И још пешес таквих места. Два дана сам то рашчивијавао.

Срећом, нисам морао да се патим са називима места у табелема у самом Стоуру. Ту је давно пала одлука да ће називи места да се куцају свуда, да се не би писала још једна маска и уводила још једна табела, компликовано то. Да би се олакшало оператерима, у пољу би остајао претходни назив, па ако је исти (а почесто јесте, већина купаца, добављача, адреса су из града), само звизну ентер и терај даље. То је направило много веће срање у колору, јер кад је требало да преправе назив, нису брисали поље, него би, и не гледајући у екран, откуцали нешто, често скр., и терали даље. Тако би писало Зрењанин, ови би преко тога откуцали „Н. Црњ“ и добијала се адреса у месту „Н. Црњнин“, „Зроград“, „Т.Ужревац“ итд итд. За то никог није болео ћошак, то се није ни сматрало за грешку, имамо папир, на папиру датум, назив купца и износ, покривени смо документима, завршили смо посао, следећи. Бар није било великих и малих слова, тадашњи линијски штампачи их нису ни имали, а и пдп није трпео мала слова на командној линији, а ваљда ни коболов компајлер, па бар са те стране није било збрке.

Следећи проблем су биле картице задругара. Нису се слагале са извештајима. За многе нове чланове би износ на картици (улога, дуга ако га је било, купљеног материјала) био различит од износа у збирном извештају. Збуњивало је поприлично, покушавао сам овако и онако и дошао до два начина да одштампам картицу - једном стандардно, по индексу, други пут бих прошао кроз целокупну табелу, без индекса, и штампао само слогове за тог члана. За доста њих је излазило на исто. За неке би без индекса било више ставки него с њим.

Након дужег зезања сам установио да проблем почиње кад број слогова пређе 32767. Аха! Нашао сам грешку у Мајкрософтовој рутини за индексирање. Или није писао индексе преко овог броја, или би премотао на нулу па газио по индексима старих слогова. Свеједно које од та два - практично би део слогова изнад овог броја био неиндексиран. Радоја није могао да верује да је овакав новајлија успео да провали баг у системском софтверу, ал' као математичар је морао да уважи доказ кад му се прикаже.

Те је почео да зивка Искра Делту, избачено одељење Нови Сад, да види шта је. Чекали смо.

А имао сам неки рок да одштампам све те картице, па сам смислио да напишем сорт. Да извезем табелу, без индекаса, у текст фајл (што би се касније звало СДФ формат) без заглавља, слоговима фиксне дужине. Онда да учитам сваки слог у меморију, тамо их поређам шелсортом, испишем. Аха, да, али меморија... имао сам можда 36К на располагању, а сама табела је била око два мегабајта. Дакле, како је Лала секао мачки реп, сваки дан по сантиметар да мање боли. Исецкао бих то на комаде, отприлике колико стане у меморију, па бих тај комад исортирао и исписао у фајл, па следећи. У другој фази бих отворио све те фајлове одједном, па узимао најмањи слог и исписивао, па који је сад најмањи, па тако редом док их има.

Радоја је мислио да нисам читав. Сорт је системска ствар, то се пише месецима, то ради читав тим, то је компликовано и велико. Ама нећу ја да пишем општи сорт са сто опција и параметара, него овај један, за ову табелу са овим кључем и не занима ме општи случај. Договоримо се да то урадим на папиру преко викенда, а ако у понедељак не буде готово, дижемо руке. Прорадило ми је у понедељак у подне. Писао сам га у Турбо Паскалу 3.1 или ту негде, што је било драстично брже од кобола. И одштампали смо картице.

Искра Делта нас је напокон позвала да дођемо да видимо.

Испало је да су знали за тај баг од почетка (а ћутали ко дупета), али је управа рекла да је Мали мекани кобол за ситне фирме, и да уопште нису очекивали да ће ико доћи до тог кобног броја слогова. За оне који ипак стигну, имају алтернативни сет рутина за индексирање. Није био за оне са слабим срцем, било је ту да се муља. Свеједно, добили смо дискете и упутства, па сам кренуо да то уградим.

Трик је био у томе да се направе бафери, чију је величину требало израчунати унапред, а који би требало да садрже показиваче на сам слог, те дужину (што сам касније научио да се зове опис стринга). Срећом, имали смо дисасемблер и некакав елементарни дибагер, па сам успевао да нађем адресу кључа, да је запишем (у хексу, на папир), да обрнем горњи и доњи бајт (нискокрајни код тај беше), и да то упишем у поље где-ми-је-кључ у том његовом баферу. Па онда још да се улинкује и та рутина... а онда кад једном све то легне где треба, код полети. Нуто чуда, шест пута брже него са оним индексом.

А онда је то требало поновити на сваком комаду кода, чега је било четрдесетак комада.


Спомиње се: 22-VI-1989., 20-V-2008., Мајкрософт (Мали мекани), партнер, ПДП, Радоје Малетин (Радоја), стамбена задруга, стоур, на енглеском

5-IV-2020 - 16-VII-2026