function salvarDadosSiop($destino, $valores)
{
    try {
        $tabela = obterTabelaSiop($destino);
        $campos = obterCampos($destino);
        $colunas = implode("\",\"", array_keys($campos));
        $auxValores = implode(",:", array_keys($campos));
        $operacao = "insert into {$tabela} (\"{$colunas}\") values (:{$auxValores})";
        $stmt = ConfigWs::factory()->getConnection()->prepare($operacao);
        $gravar = true;
        foreach ($campos as $chave => $tipo) {
            if ($chave == 'identificadorUnico' && $valores[$chave] == 0) {
                $gravar = false;
            }
            switch ($tipo) {
                case TIPO_NUMERAL:
                    $valor = $valores[$chave];
                    $tipo_numeral = substr($valor, -3, 1);
                    // Pega o separador de decimal se houver
                    switch ($tipo_numeral) {
                        case ',':
                            $valor = str_replace('.', '', $valor);
                            $valor = str_replace(',', '.', $valor);
                            break;
                        case '.':
                            $valor = str_replace(',', '', $valor);
                            break;
                        default:
                            break;
                    }
                    $pdo = \PDO::PARAM_STR;
                    break;
                case TIPO_TEXTUAL:
                    $valor = utf8_encode($valores[$chave]);
                    $pdo = \PDO::PARAM_STR;
                    break;
                case TIPO_BOOLEAN:
                    $valor = $valores[$chave] == 'true' ? true : false;
                    $pdo = \PDO::PARAM_BOOL;
                    break;
                default:
                    $valor = (int) $valores[$chave];
                    $pdo = \PDO::PARAM_INT;
            }
            $bind = ":{$chave}";
            $stmt->bindValue($bind, $valor, $pdo);
        }
        if ($gravar) {
            $stmt->execute();
            return $stmt->fetch(PDO::FETCH_ASSOC);
        }
    } catch (Exception $e) {
        agora("Erro ao salvar dados:");
        var_dump($e->getMessage());
        echo "Parâmetros passados:\n";
        var_dump($destino, $valores);
    }
    return false;
}
            }
        } while (!$orgaosAux['sucesso']);
    }
    agora("Total de órgãos registrados: {$totalRegistrosOrgaos}.");
}
if ($baixar['programas']) {
    /**
     * ======================================================================
     * Obtendo a base de dados de programas para o ano de exercício repassado
     * 
     */
    agora("Obtendo programas.");
    limparDadosSiop('programas', "exercicio = '{$exercicio}'", "Limpando base de dados dos programas para o ano de {$exercicio}.");
    $orgaosSiop = obterOrgaosSiopPorExercicio($exercicio);
    $programas = array();
    $camposPrograma = obterCampos('programas');
    $totalOrgaosSiop = count($orgaosSiop);
    $contadorProgramasPorOrgaoSiop = 0;
    foreach ($orgaosSiop as $k => $j) {
        $codigoSiop = $j['CODIGOSIOP'];
        $contadorProgramasPorOrgaoSiop++;
        do {
            $programasAux = obterProgramasPorOrgaoAnoExercicio($codigoSiop, $exercicio, $contadorProgramasPorOrgaoSiop, $totalOrgaosSiop);
            if (!$programasAux['sucesso']) {
                agora("\tNão foi possível obter os dados dos programas:");
                echo "\n";
                echo str_replace("<br>", "\n", $programasAux['mensagensErro']);
                echo "\n";
            } else {
                $contadorProgramasPorOrgao = 0;
                foreach ($programasAux['registros'] as $programa) {