|  | La procedura è scritta
             in Pascal: 
    |  | Essa organizza i parametri al fine
              di stampare un'area ci spazi colorati con bordo scelto con tecnica
              di tipo CASE .. OF |  |  | Sebbene non abbia senso passare le 
    dimensioni massime (perché verrebbe stampata una cornice senza ombra) la 
    procedura prevede anche questa eventualità stampando l'ultimo carattere 
                  a basso livello con  
    la 
        
        STAchr, 
    per evitare i noti problemi di scrolling verso l’alto di una riga di tutta 
    l’immagine legati alla eventuale stampa in posizione [80,25]. |  |  | Naturalmente la stampa dell'ombra lascia 
    inalterato il carattere Ascii sottostante, cambiandone solo il colore con 
    l'aiuto della
                  
        
        ATTRchr. |  
        
        | Codice Sorgente |  |  |  |  |  
        | PROCEDURE
              Cornice2 (rig,col,lar,alt,txt,sfo,ombP,ombS,tipo:integer); VAR  
             n,m:integer;
 chr:array[1..6] of char;
 BEGIN
 CASE  tipo OF
 1: chr:=('
  '); 2: chr:=('
  '); 3: chr:=('
  '); 4: chr:=('
  '); 5: chr:=('
  '); 6: chr:=('
  '); end;
 textcolor(txt);textbackground(sfo);
 gotoxy(col,rig);
 
 write(' ',chr[1]);          {**************************}
 FOR n:=1 to lar-4 do       
              {           
                          
              }
 IF (tipo=5) THEN       
                 {Stampa il tratto
             superiore}
 write ('
  ')           
                {della cornice          
              
              } ELSE                       
              {(se "lar"=4 non  esegue il}
 write(chr[5]);           
             { loop)          
                     
              }
 write(chr[2],' ');         
             {**************************}
 
 alt-2 do       
              {**************************}
 begin                      
             {Stampa il tratto  centrale}
 col,rig+m);       
              {della cornice  con l'ombra}
 write(' ',chr[6]);       
              {di 2 caratteri  posti a                   }
 FOR n:=1 to lar-4 do     
             {           
                          
              }
 write(' ');            
             {           
                          
              }
 write(chr[6],' ');       
              {*********         
                                      }
 Attrchr(rig+m,lar+col 
              ,ombP,ombS);{             
                                  }
 Attrchr(rig+m,lar+col+1,ombP,ombS);{              
                                 }
 end;                                
             {*****************}
 
 gotoxy(col,rig+alt-1);      
             {*************************}
 write(' ',chr[3]);          
              {Stampa  il tratto inferio-}
 FOR n:=1 to (lar-4) do       {re   della  cornice  con }
 IF (tipo=5) THEN          
              {l'ombra di un  carattere }
 write ('
  ')           
                {posto
             sotto             
             } ELSE                      
              {           
                         
              }
 write(chr[5]);          
              {           
                         
              }
 write(chr[4]);              
              {*************           
              }
 STAchr(rig+alt-1,col+lar-1,txt,sfo,'
             ');  {       
                
              }
 IF lar<80 THEN                           
              {       
                
              }
 Attrchr(rig+alt-1,lar+col 
              ,ombP,ombS); {       
                
              }
 IF  lar<79 THEN                          
               {       
                
              }
 Attrchr(rig+alt-1,lar+col+1,ombP,ombS);
              {************}
 
 IF lar=79 THEN
             lar:=lar-1;          
              {*****************}
 IF lar=80 THEN
             lar:=lar-2;          
              {Stampa l'ombra   }
 FOR n:=1 to (lar) do                
             {sottostante     
             }
 Attrchr(rig+alt,col+n+1,ombP,ombS);{*****************}
 END;
 |  |