[Progress programma] Krijg rommel in output

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

  • vandenhende
  • Registratie: Februari 2002
  • Nu online
Ik ben voor mijn stage bezig met het volgende:

We hebben hier een ERP pakket die draait op een progress database. Nu moet ik op het moment dat een aantal waarden veranderen in de databse een ASCII file laten genereren. Die moet er als volgt uit komen te zien:

artikelnummer (20 karakters) daarna een spatie en daarna artikelomschrijving (50 karakters.

Ik krijg dit al voor mekaar. Probleem is alleen dat als de artikelomschrijving kleiner is dan 50 karakters dat hij de rest van die 50 opvult met rommel bijvoorbeeld:
code:
1
artikelnr            Omschrijving      2


Dus die 2 is rommel en ik heb geen idee waar hij die vandaan haalt.
Nu moet ik denk ik de lege ruimte in die omschrijving opvullen met spaties. Weet iemand hoe ik dit moet aanpakken?

Alvast bedankt!
_/-\o_

[ Voor 9% gewijzigd door vandenhende op 21-10-2004 12:05 ]


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

En de programmatie gebeurd ook in Progress? Of spreek je die Progress-db aan vanuit .NET of eventueel nog een andere taal?

  • vandenhende
  • Registratie: Februari 2002
  • Nu online
-FoX- schreef op 21 oktober 2004 @ 10:47:
En de programmatie gebeurd ook in Progress? Of spreek je die Progress-db aan vanuit .NET of eventueel nog een andere taal?
Ik programmeer met de progress precedure editor.

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Kan je de code waarmee je de ASCII file genereert ook eens posten?

Het werken met Progress is voor mij ondertussen alweer 2jaar geleden, dus hopelijk ga ik u nog kunnen helpen :)

  • vandenhende
  • Registratie: Februari 2002
  • Nu online
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{ud/GlbAlert.i &TableName = "Part"}

/* bestandsnaam dynamisch aanmaken */ 
def var bestandsnaam as character no-undo. 
assign bestandsnaam = "c:\temp\" + string(part.partnum) + ".txt".  

/* output maken en in file plaatsen */
DEFINE VARIABLE artikel AS MEMPTR. 
SET-SIZE(artikel) = 71. 

PUT-STRING(artikel,1) = part.partnum.
PUT-STRING(artikel,22,50) = part.Partdescription.

OUTPUT TO value(bestandsnaam).
EXPORT artikel.
OUTPUT CLOSE.

/* terug naar Vantage en email versturen door BAM annuleren */
RETURN "CANCEL SEND".
RETURN.

[ Voor 6% gewijzigd door vandenhende op 21-10-2004 11:31 ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

* CyBeR geen ervaring met progress.. Maar het klinkt alsof je gewoon vergeet die string af te sluiten. In C gooi je er een '\0' achteraan.

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Ik werk ook met Progress, dus misschien dat ik je ook nog kan helpen als je de code post.
Dat zijn er alweer 2.... :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17:22

Gerco

Professional Newbie

Ik denk dat het komt doordat je een MEMPTR gebruikt die niet altijd helemaal gevuld wordt. Misschien kun je beter dit doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{ud/GlbAlert.i &TableName = "Part"}

/* bestandsnaam dynamisch aanmaken */ 
def var bestandsnaam as character no-undo. 
assign bestandsnaam = "c:\temp\" + string(part.partnum) + ".txt".  


/* output maken en in file plaatsen */
DEFINE VARIABLE artikel AS CHARACTER NO-UNDO. 
ASSIGN artikel = FILL(" ", 71).

OVERLAY(artikel, 1, 20) = part.partnum.
OVERLAY(artikel,22,50) = part.Partdescription.

OUTPUT TO value(bestandsnaam).
PUT UNFORMATTED artikel SKIP.
OUTPUT CLOSE.

/* terug naar Vantage en email versturen door BAM annuleren */
RETURN "CANCEL SEND".


Zal wel niet gelijk runnen, heb geen Progress hier, maar dit werkt iets veiliger dan met memptrs gaan klooien.

Wat je ook kunt doen is een FRAME declareren met die twee gegevens erin en die dan DISPLAY'en op de output stream, is iets meer progressig dan deze oplossing.

[ Voor 23% gewijzigd door Gerco op 21-10-2004 11:52 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • vandenhende
  • Registratie: Februari 2002
  • Nu online
Hij werkt! Perfect.

Dus die memptr veroorzaakte die rommel. Dank je!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Fijn dat het reeds opgelost is.

Ik begrijp echter in eerste instantie niet waarom je hiervoor een MEMPTR (pointer) wou gebruiken? Heeft dit een specifieke reden?
Pagina: 1