Files correlati : report.alx Ricompilazione Demo : [ ] Commento : Tolto MON inserito inavvertitamente per debug git-svn-id: svn://10.65.10.50/trunk@13683 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			219 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | 
						|
\ Funzioni di aiuto per implementazione messaggi
 | 
						|
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | 
						|
 | 
						|
: REP_GET_POS.X ( f1 -- n1 ) 
 | 
						|
  GET_POS DROP 
 | 
						|
;
 | 
						|
 | 
						|
: REP_GET_POS.Y ( f1 -- n1 ) 
 | 
						|
  GET_POS NIP 
 | 
						|
;
 | 
						|
 | 
						|
: REP_GET_SIZE.X ( f1 -- n1 ) 
 | 
						|
  GET_SIZE DROP 
 | 
						|
;
 | 
						|
 | 
						|
: REP_GET_SIZE.Y ( f1 -- n1 ) 
 | 
						|
  GET_SIZE NIP 
 | 
						|
;
 | 
						|
 | 
						|
: REP_GET_BOTTOM ( f1 -- n1 )
 | 
						|
  DUP 
 | 
						|
  REP_GET_POS.Y
 | 
						|
  SWAP 
 | 
						|
  REP_GET_SIZE.Y
 | 
						|
  +
 | 
						|
;
 | 
						|
 | 
						|
: REP_OFFSET_FIELD_POS.X ( n1 -- ) 
 | 
						|
  #THIS REP_GET_POS.X     \ Legge posizione x
 | 
						|
  +                       \ La incrementa di n1
 | 
						|
  #THIS REP_GET_POS.Y     \ Legge posizione y
 | 
						|
  #THIS SET_POS           \ Aggiorna posizione
 | 
						|
;
 | 
						|
 | 
						|
: REP_OFFSET_FIELD_POS.Y ( n1 -- ) 
 | 
						|
  #THIS REP_GET_POS.Y     \ Legge posizione y
 | 
						|
  +                       \ La incrementa di n1
 | 
						|
  #THIS REP_GET_POS.X     \ Legge posizione x
 | 
						|
  SWAP                    \ Scambia le coordinate
 | 
						|
  #THIS SET_POS           \ Aggiorna posizione
 | 
						|
;
 | 
						|
 | 
						|
: REP_MESSAGE_ALIGN_BOTTOM ( f1 -- )
 | 
						|
  REP_GET_BOTTOM          \ Calcola fondo di f1
 | 
						|
  #THIS REP_GET_BOTTOM    \ Calcola fondo del campo corrente
 | 
						|
  -                       \ Calcola offset come differenza dei due
 | 
						|
  REP_OFFSET_FIELD_POS.Y  \ Incrementa posizione y del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: REP_MESSAGE_ALIGN_TOP ( f1 -- )
 | 
						|
  REP_GET_POS.Y           \ Legge posizione y del capo f1
 | 
						|
  #THIS REP_GET_POS.X     \ Legge posizione x del campo corrente
 | 
						|
  SWAP                    \ Scambia le coordinate
 | 
						|
  #THIS SET_POS           \ Aggiorna posizione del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: REP_MESSAGE_ALIGN_CENTER ( f1 -- )
 | 
						|
  REP_GET_BOTTOM          \ Calcola fondo del campo f1
 | 
						|
  #THIS REP_GET_BOTTOM    \ Calcola fondo del campo corrente
 | 
						|
  - 2 /                   \ Calcola offset verticale
 | 
						|
  REP_OFFSET_FIELD_POS.Y  \ Aggiorna posizione del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: REP_MESSAGE_ALIGN_UNDER ( f1 -- )
 | 
						|
  REP_GET_BOTTOM          \ Calcola fondo di f1
 | 
						|
  #THIS REP_GET_POS.Y     \ Calcola inizio del campo corrente
 | 
						|
  -                       \ Calcola offset come differenza dei due
 | 
						|
  REP_OFFSET_FIELD_POS.Y  \ Incrementa posizione y del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: REP_COPY_HEIGHT ( f1 -- )
 | 
						|
  REP_GET_SIZE.Y          \ Altezza campo origine
 | 
						|
  #THIS REP_GET_SIZE.X    \ Larghezza campo destinazione
 | 
						|
  SWAP                    \ Scambia parametri per set_size
 | 
						|
  #THIS SET_SIZE          \ Aggiorna dimensioni
 | 
						|
;
 | 
						|
 | 
						|
: REP_FIELD_NOT_NULL ( f1 -- f1 b1 )
 | 
						|
  SP 
 | 
						|
;
 | 
						|
 | 
						|
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | 
						|
\ Implementazione dei vari messaggi standard
 | 
						|
\ f1 campo o sezione del report
 | 
						|
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | 
						|
 | 
						|
: MESSAGE_ADD ( f1 -- )
 | 
						|
  #THIS @                      \ Leggo il valore del campo corrente
 | 
						|
  SWAP +!                      \ Incrementa f1 col contenuto del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_ALIGN ( s1 f1 -- )
 | 
						|
  SWAP                         \ Porta su il tipo di allineamento (BOTTOM)
 | 
						|
  "REP_MESSAGE_ALIGN_" SWAP +  \ Si crea il nome della funzione da chiamare
 | 
						|
  PERFORM                      \ Chiama ad esempio DO_MESSAGE_ALIGN_BOTTOM, ecc... 
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_APPEND ( f1 -- )
 | 
						|
  #THIS @                      \ Leggo il valore del campo corrente
 | 
						|
  DUP EMPTY=                   \ Controlla se e' vuoto
 | 
						|
  IF
 | 
						|
    DROP                       \ Scarta il valore nullo 
 | 
						|
	DROP                       \ Scarta f1
 | 
						|
  ELSE
 | 
						|
    OVER @                     \ Leggo il valore di f1
 | 
						|
	EMPTY= NEGATE
 | 
						|
	IF 
 | 
						|
      " " SWAP +               \ Sommo uno spazio all'inizio della stringa
 | 
						|
    THEN  
 | 
						|
	SWAP                       \ Riporto in primo piano f1
 | 
						|
    +!                         \ Incrementa f1 col contenuto della stringa
 | 
						|
  THEN
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_APPEND_CR ( f1 -- )
 | 
						|
  #THIS @                      \ Leggo il valore del campo corrente
 | 
						|
  DUP EMPTY=                   \ Controlla se e' vuoto
 | 
						|
  IF
 | 
						|
    DROP                       \ Scarta il valore nullo 
 | 
						|
	DROP                       \ Scarta f1
 | 
						|
  ELSE	 
 | 
						|
    CR                         \ Inserisco un "a capo"
 | 
						|
	SWAP
 | 
						|
    +                          \ Sommo un "a capo" all'inizio della stringa
 | 
						|
    SWAP                       \ Riporto in primo piano f1
 | 
						|
    +!                         \ Incrementa f1 col contenuto della stringa
 | 
						|
  THEN
 | 
						|
;
 | 
						|
 | 
						|
 | 
						|
: MESSAGE_COPY ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
    #THIS @ SWAP !             \ Copia il campo corrente
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_DEBUG ( NULL -- )
 | 
						|
  MON                          \ Attiva il fantastico debugger
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_DISABLE ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
	DISABLE                    \ Report defined word
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_ENABLE ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui parametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
	ENABLE                     \ Report defined word
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_HIDE ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
	HIDE                       \ Report defined word
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_INCR ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
	INCR                       \ Native word
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_ISAMREAD ( s1 s2 n1 -- )
 | 
						|
  ISAM_READ
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_PAGENO ( -- )        \ Numero di pagina corrente
 | 
						|
  #REPORT.PAGE @               \ Leggo il numero di pagina
 | 
						|
  #THIS !                      \ Setto il campo corrente col numero 
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_RESET ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
    NULL SWAP !                \ Azzera campo
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_SHOW ( f1 ... fn -- )
 | 
						|
  BEGIN                        \ Ciclo sui prametri 
 | 
						|
    REP_FIELD_NOT_NULL
 | 
						|
  WHILE              
 | 
						|
	SHOW                       \ Report defined word
 | 
						|
  REPEAT
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_SUB ( f1 -- )
 | 
						|
  #THIS @                      \ Leggo il campo corrente
 | 
						|
  -1 *                         \ Lo cambio di segno
 | 
						|
  SWAP +!                      \ Decrementa f1 col contenuto del campo corrente
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_TABLEREAD ( s1 s2 s3 -- )
 | 
						|
  TABLE_READ
 | 
						|
;
 | 
						|
 | 
						|
: MESSAGE_TODAY ( -- )         \ Data odierna
 | 
						|
  #SYSTEM.DATE @               \ Leggo la data
 | 
						|
  #THIS !                      \ Setto il campo corrente con la data
 | 
						|
;
 | 
						|
: MESSAGE_DITTA ( s1 -- )
 | 
						|
  FIRM                         \ Campi della ditta corrente
 | 
						|
;
 | 
						|
 |