Newsgroup: it.comp.lang.vo-clipper
Titolo: funzione data

a chiunque mi possa aiutare,
ilo listato che allego č una funzione clipper molto comoda.
In questa io stabilisco una data iniziale ed il numero di mese da
incrementare, e tramiti una funzione for...next ho tutta una serie di date
intervallete.
In pratica se il cliente ha 24 rate con prima scadenza il 20 sett 2001 la
funzione mi elenca le date successive.
In VO non sono riuscito a convertirla, sicuramente perchč non ho la minima
idea di come fare.
FUNCTION datecalc(dInDate,nAddorSubtract)
LOCAL dReturn,cStringDate,nOldDate
LOCAL nTheDay,nTheMonth,nTheYear,nDaysInMonth,nTotalMonths
nOldDate = SET_DATE(1)
dReturn = dInDate
DO CASE
IF Empty(dInDate)
  dReturn := dInDate
ELSE
  nTheDay       := Day(dInDate)
  nTheMonth     := Month(dInDate)
  nTheYear      := Year(dInDate)
  nTotalMonths  := (nTheYear*12)+nTheMonth+nAddorSubtract-1
  nTheYear      := INT(nTotalMonths/12)
  nTheMonth     := nTotalMonths%12+1
  nDaysInMonth  :=  {31,28,31,30,31,30,31,31,30,31,30,31}[nTheMonth]
  nTheDay       := Min(nTheDay,nDaysInMonth)
  dReturn       := CToD(Str(nTheMonth,2) + "/" + Str(nTheDay,2)+"/" +
Str(nTheYear,4))
ENDIF
SET_DATE(nOldDate)
RETURN dReturn
Se mi aiutate al solito dico grazie
Francesco

 RETURN dReturn
Ehm... e gli anni bisestili?
EMG
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

idea di come fare.
dovresti usare variabili di tipo DATE, su cui fare semplici operazioni
di somma o sottrrazione e, se necessario, di controllo, per poi
trasformarle in stringhe, se ti servono come stringhe.
ciao

 wrote in message
3BF37D1C...@emagsoftware.it...


 Secco e risentito.
Prenditi una camomilla va...


 ilo listato che allego è una funzione clipper molto comoda.

 In VO non sono riuscito a convertirla, sicuramente perchè non ho la minima

-- 
Posted from 
flat-p01-m113.aruba.it
 [62.149.161.115] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
3BF4008A...@emagsoftware.it...


 wrote in message
e9b8071b43c403cdb6d...@mygate.mailgate.org...


 protetta ed è vietato ucciderle.
D'accordo. Ora vogliamo tornare ai discorsi tecnici?


 
-- 
Posted from 
flat-p08-m019.aruba.it
 [62.149.168.21] 


 ilo listato che allego č una funzione clipper molto comoda.
<big snip>
Questa e' una traduzione x VO della tua funzione cosi' come l'hai inviata
anche xche' ti siano + chiare le conversioni.
due considerazioni:
1) e' vero che sbaglia i calcoli con le date bisestili cosi' come
felicemente intuito da EMG. Se x es. chiedi 12 mesi a partire da 29/02/2000
restituisce 28/02/2001 e non 01/03/2001, ma se questo e' quello che ti
serve... io l'ho lasciata tale e quale... forse il ciclo DO CASE non
concluso fa il resto? ed allora xche' non inserirla tutta e ci risparmiavamo
un bel po' di discussioni?
///////Inizio della parte (molto) OT
2)Agli inizi di questo NG ho avuto da ridire su certi interventi di EMG su
VO, che non conosce x sua stessa ammissione. In particolare ricordo che si
trattava di un problema di bloccaggio record che, a volte, inspiegabilmente
non avveniva e che ci aveva creato (a Francesco Leo e a me) grosse grane.Gli
interventi di EMG mi davano l'impressione del saputello che guarda il mondo
dalla sua torre eburnea, anche xche' tentava di spiegarmi la teoria dei
dbase che conosco dai tempi di RPG II (ebbene si, ho una certa eta') e,
nella foga della difesa della sua posizione non si rendeva conto che
parlavamo, perartro, di due cose diverse: io di una questione pratica dovuta
ad un problema di VO, lui di, pura, teoria. Ricordo che mi invio', quale
esempio di quello che non avevo capito, un listato x il bloccaggio che usavo
sin dalle elementari... Col tempo, pero' mi sono ricreduto sul suo conto.
Debbo convenire, tuttavia, che certe volte, tuttora, i suoi interventi, per
il modo con cui sono esposti, possono *irritare* qualcuno. Credo che sia un
problema di limiti dovuti al mezzo e-mail e non ad un atteggiamento mentale
del nostro. Per questo sarebbe bene, prima di inca**arsi e rispondere male
chiedere spiegazioni all'autore della e-mail (chiunque esso sia
naturalmente...). EMG e' una persona preparata ed esperta e ad occhio e
senza provarla si e' reso conto che, in effetti per essere d'uso generale,
l'errore c'era nella tua funzione, questo dovresti riconoscerlo. Detto
questo una ultima cosa, non credo che questo tuo atteggiamento possa
giovarti molto. In questo, ed in tutti i NG del mondo, con le buone, maniere
si ottiene tutto.
Se proprio vogliamo fare una tiratina d'orecchi al ns. EMG bastava dirgli
con voce tonante: *era proprio necessario quotare tutto il msg originale
nella risposta?*, EMG non te la prendere... e continua cosi'. <;-)))))
(non ancora) Dr. Franco Signore
////////////////////////////////////////////////////////////////////////////
///
FUNCTION datecalc(dInDate AS DATE,nAddorSubtract AS INT ) AS DATE STRICT
LOCAL nTheDay    AS INT
LOCAL nTheMonth   AS INT
LOCAL nTheYear    AS INT
LOCAL nDaysInMonth   AS INT
LOCAL nTotalMonths   AS INT
LOCAL aGiorniMese   AS ARRAY
aGiorniMese := {31,28,31,30,31,30,31,31,30,31,30,31}
  nTheDay       := Day(dInDate)
  nTheMonth     := Month(dInDate)
  nTheYear      := Year(dInDate)
  nTotalMonths  := (nTheYear * 12 + nTheMonth + nAddorSubtract - 1 )
  nTheYear      := INT(nTotalMonths/12)
  nTheMonth     := nTotalMonths % 12 + 1
  nDaysInMonth  := aGiorniMese[Month(dInDate)]
  nTheDay       := Min(nTheDay,nDaysInMonth)
 RETURN  CToD(StrZero(nTheDay, 2 ) +"/" + StrZero(nTheMonth,2) +"/" +
StrZero(nTheYear, 4))

 EMG non te la prendere... e continua cosi'. <;-)))))
Ok, e grazie delle puntualizzazioni.
