É bem artesanal, literalmente uma letra por vez, a letra "O".
Depois vou separar o restante da rotina, aqui só o desenho do gráfico.
Código: Selecionar todos
// desenha titulo e legenda das linhas e comparacoes
Cls()
@ 2, 0 SAY Padc( "COMPARATIVO MES A MES", 80 )
FOR nContResumo = 1 TO nQtContas
@ 3, nContResumo * 20 SAY "OO" COLOR acCores[ nContResumo ]
@ Row(), Col() + 1 SAY acResumo[ nContResumo ]
NEXT
@ 4, 12 TO nAlturaGrafico + 3, 12
@ nAlturaGrafico + 4, 12 TO nAlturaGrafico + 4, 12 + Len( acTitulo ) * 4 + 2
// desenha o grafico
FOR nContAltura = 1 TO nAlturaGrafico
IF Mod( 19 - nContAltura, 3 ) == 0
@ 3 + nContAltura, 0 SAY mValLin * ( nAlturaGrafico + 1 - nContAltura ) PICTURE "9999999999"
ENDIF
FOR nContMes = 1 TO Len( acTitulo )
FOR nContResumo = 1 TO nQtContas
IF anValor[ nContResumo ][ nContMes ] >= mValLin * ( nAlturaGrafico + 1 - nContAltura )
@ 3 + nContAltura, 10 + nContMes * 4 + nContResumo - 1 SAY "O" COLOR acCores[ nContResumo ] // aqui desenha
ENDIF
NEXT
NEXT
NEXT
// legenda das colunas
@ nAlturaGrafico + 6, 0 SAY "MESES->"
FOR nContMes = 1 TO Len( acTitulo )
@ iif( Mod( nContMes, 2 ) == 0, nAlturaGrafico + 5, nAlturaGrafico + 6 ), 10 + nContMes * 4 - 1 SAY acTitulo[ nContMes ]
NEXT
Nota: Como usei array, vai ser fácil transformar em uma rotina genérica, aliás, era essa a idéia.
acResumo: Nome de cada "comparação"
nQtContas: Tamanho do array acResumo
acTitulo: Nome de cada coluna
nQtMeses: Tamanho do array Titulo (qtde. colunas)
anValor[ nQtContas ] [ nQtMeses ]: Valores
** alterei os traços "-----" pra @ TO depois da postagem