Kald til Windows fra et DOS program

Da Microsoft Dynamics XAL eller Concorde XAL som blev det blev kaldt i 1991 da det blev lanceret, var Internettet ikke udbredt. Hvad gør man så anno 2008 når ledelsen gerne vil se et track and trace kaldt inde fra økonomi-programmet.

Vi anvendte et program som idag hedder Consignor til at printe pakke lables ud. Jeg havde lavet det således et andet sted i XAL at der blev lagt en tekst-fil ned i et bestemt område på en server som Consignor programmet så læste.

Denne fil rummede ordre-nummer og informationer om kunde, forsendelse. Da vi på det tidspunkt lod lagerfolkene veje og indtaste de sidste oplysninger i forbindelse med forsendelsen var der i filen kun angivet vægt på lagervarerne. Produktionsvarer vejede lageret.

Consignor fungerer på den måde at programmet foruden label-printning også sender en besked til fragtleverandøren om at der er varer til afhentning. Når varerne er afhentet og de er læst ind i fragtleveradørens system, så kan man trække en fil med forsendelses-id og eget ordrenummer ud til indlæstning i ens økonomi-system, så medarbejderen kan trykke på en knap og på internettet kan lave en Track & Trace funktion hos den pågældende fragtleverandører (Man kunne have mange forskellige). Nemt og hurtigt. Men udfordringen lå selvfølgelig i at XAL dybest set kørte på en DOS-kerne. Så tilbage til start-spørgsmålet: Hvad gør man?

Man programmerer det.

Jeg lavede et kartotek med få felter. SalesNumber (Ordrens nummer), TranportFirm (En kode for transportfirmaet skabt ved indlæsningen af filen), samt en felt til selve track & trace koden TransportID. For min egen skyld læste jeg også datoen ind. På ordrer som blev sendt over nogle omgange viste det sig at være en hjælp for ordremedarbejderen.

Det bringer os til selv ordrebilledet.

Hvis vi starter fra toppen:

Billedet havde en funktion hvor man kunne importere filen fra Consignor. Jeg lavede en ekstern XAL-kørsel til dette formål som jeg kan beskrive en anden gang. I NAV vil dette være en CodeUnit.Firmaet var på dette tidspunkt ved at opdatere fra Windows XP til Windows 7. Der var endvidere både danske og engelske udgaver af Windows. Jeg var derfor nød til at lave to nye grupper som registerede om der var tale om en dansk eller engelsk Windows, da programmet er installeret forskelligt alt efter hvilken version vi taler om.

Koden som den så ud i 2010. Klik på billedet for at kunne læse koden.
ShipmentURLcallXAL
Ja, jeg ved det. Jeg kunne også lave et kartotek til dette formål. Mange veje fører til ROM.

Hjemmesider ændrer sig. Jeg måtte en gang imellem ind og ændre på koden, hvis en af fragtleverandørerne lavede deres hjemmeside om.

Jeg overvejede om jeg skulle lægge hele URL kaldet ud til et kartotek styret af Transportfirm koden, men fravalgte det fordi at nogle hjemmesider krævede at den variable transport kode blev lagt midt i kaldet.

Hvis vi starter fra oven. Parameterkaldet IMPORTEDI startede den eksterne import-funktion.

Parameterkaldet URLHOP er starten til den aktuelle kode.

IF UserInGroup kaldte den funktion som identificerede om brugeren brugte en danske eller engelsk Windows version.

Derefter kommer der 3 IF-sætninger. 1 pr. fragtleverandøren. Også her er der en grad af metode-frihed. Man kunne have valgt en form for CASE-funktion.

Færdig finale. Sådan kan et DOS-program kalde Internet baserede hjemmesider i en Windows tid. Hvorfor trak man i det hele taget XAL tilbage? Jeg forstår det ikke.