Documento de API
Produto: | Datasul |
Ocorrência: | Documentação de API |
Nome Físico | Prgfin/fgl/fgl905zb |
Objetivo
Retornar os valores dos saldos realizado e empenhado da tabela sdo_ctbl, utilizada a partir da release 5.05.
Funcionamento
Na forma padrão, realiza-se a chamada através de um comando RUN normal, passando-se os parâmetros com as informações necessárias.
A sintaxe para a chamada da API é:
run Prgfin/fgl/fgl905zb.py (Input 1, Input table tt_input_leitura_sdo, output table tt_retorna_sdo_ctbl, output table tt_log_erros). |
Parâmetros
Parâmetro | Descrição |
num_vers_integr_api | Versão de Integração da API; |
tt_input_leitura_sdo | Tabela temporária que contém todas as faixas de dados para que seja realizada a leitura na tabela de saldos; |
tt_retorna_sdo_ctbl | Retorna os dados referentes ao saldo de acordo com as faixas passadas na temp-table anterior; |
tt_log_erros | Retorna para o usuário, as informações de erros ocorridos durante o processo de leitura de saldo; |
Retorno
A API retornará informações nas tabelas temporárias tt_log_erros e tt_retorna_sdo_ctbl.
Tabelas Temporárias
O programa que irá executar a API de leitura de saldos deverá conter e criar as seguintes tabelas temporárias:
Nos atributos das tabelas temporárias de entrada e saída:
1) Tabela leitura saldo
Tabela Temporária | Descrição | Entrada/Saída |
tt_input_leitura_sdo | | Entrada |
Atributo | Tipo | Formato | Descrição | Obrigatório | Evolução |
ttv_cod_label | character | x(8) | Nome do atributo que será atribuído para ttv_des_conteudo. É possível criar as seguintes informações para busca de saldo: "Empresa" , "Cenário", "Finalidade Econômica" , "Plano Contas", "Plano Centro Custo" , "Considera apenas Ccusto Sintético" , "Conta e Ccusto", Faixas de Leitura de Saldos : "Data Inicial", "Data Final", "Conta Contabil Inicial" , "Conta Contabil Final" , "Projeto Inicial" , "Projeto Final" , "Estabelecimento Inicial" , "Estabelecimento Final" , "UN Inicial" , "UN Final, "Centro Custo Inicial" , "Centro Custo Final" , Faixas de PARTE FIXA E EXCEÇÃO : "Parte Fixa Conta Contábil", "Parte Fixa Centro Custo", "Parte Fixa Projeto", "Exceção Conta Contábil", "Exceção Centro Custo", "Exceção Projeto", Parâmetros Execução Orçamentária: "Unidade Orçamentária", "Valores Empenhados", "Cenário Orctário", "Unidade Orçamentária2", "Sequencia Orcto Contábil", "Versão Orçamento Contábil". Além das faixas, é necessário criar os seguintes registros na temp-table: "Apuração de Resultados", "Leitura", "Condição". | | |
ttv_des_conteudo | character | x(40) | Valor do atributo: - Considera apuração de resultado – (SIM/NÃO);
- Considera apenas Ccusto Sintético – (SIM/NÃO);
- Leitura – (FOR EACH, FIND FIRST, FIND LAST);
- Condição – (IGUAL, MENOR, MENOR OU IGUAL, MAIOR OU IGUAL E MENOR OU IGUAL).
- Conta e Ccusto = “”
- Valores Empenhados – yes
Observações: - A condição de leitura MAIOR OU IGUAL E MENOR OU IGUAL utilizar somente com a forma de leitura FOR EACH e informar atributos “Data Final” e “Data Inicial”.
- Não informando a forma e condição de leitura, assume Leitura = “FOR EACH” e Condição = “ IGUAL”.
As condições de leitura (IGUAL, MENOR, MENOR OU IGUAL) são utilizadas para validação do atributo “Data Final” informado no arquivo. | | |
ttv_num_seq_1 | integer | >>>,>>9 | Número seqüencial que identifica o conjunto a que pertence o atributo | | |
ttv_num_seq_2 | integer | >>>>,>>9 | Segundo número seqüencial que identifica o conjunto do atributo | | |
def temp-table tt_input_leitura_sdo no-undo
field ttv_cod_label as character format "x(8)" label "Label" column-label "Label"
field ttv_des_conteudo as character format "x(40)" label "Texto" column-label "Texto"
field ttv_num_seq_1 as integer format ">>>,>>9"
field ttv_num_seq_2 as integer format ">>>>,>>9"
index tt_ID is primary
ttv_num_seq_1 ascending
.
2) Tabela retorna saldo contábil
Tabela Temporária | Descrição | Entrada/Saída |
tt_retorna_sdo_ctbl | | Saída |
Atributo | Tipo | Formato | Descrição | Obrigatório | Evolução |
tta_num_seq | integer | >>>,>>9 | Número de seqüência do Registro | | |
tta_cod_empresa | character | x(3) | Código da Empresa | | |
tta_cod_finalid_econ | character | x(10) | Código da Finalidade Econômica | | |
tta_cod_plano_cta_ctbl | character | x(8) | Código do Plano de Contas | | |
tta_cod_cta_ctbl | character | x(20) | Código da Conta Contábil | | |
tta_cod_plano_ccusto | character | x(8) | Código do Plano Centros Custo | | |
tta_cod_ccusto | character | x(11) | Código do Centro de Custo | | |
tta_cod_proj_financ | character | x(20) | Código do Projeto | | |
tta_cod_cenar_ctbl | character | x(8) | Código Cenário Contábil | | |
tta_cod_estab | character | x(3) | Código Estabelecimento | | |
tta_cod_unid_negoc | character | x(3) | Código Unidade Negócio | | |
tta_dat_sdo_ctbl | date | 99/99/9999 | Data do Saldo Contábil | | |
tta_val_sdo_ctbl_db | decimal | ->>,>>>,>>>,>>9.99 | Valor do Movimento de Débito | | |
tta_val_sdo_ctbl_cr | decimal | ->>,>>>,>>>,>>9.99 | Valor do Movimento de Crédito | | |
val_sdo_ctbl_fim | decimal | ->>,>>>,>>>,>>9.99 | Valor do Saldo Contábil Final | | |
tta_val_apurac_restdo | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração de Resultado | | |
tta_val_apurac_restdo_db | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração Resultado Débito | | |
tta_val_apurac_restdo_cr | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração Resultado Crédito | | |
tta_val_apurac_restdo_acum | decimal | ->>>,>>>,>>>,>>9.99 | Valor Apuração Resultado Final | | |
tta_val_sdo_ctbl_db_sint | decimal | ->>,>>>,>>>,>>9.99 | Valor Movimento Débito Sintético | | |
tta_val_sdo_ctbl_cr_sint | decimal | ->>,>>>,>>>,>>9.99 | Valor Movimento Crédito Sintético | | |
tta_val_sdo_ctbl_fim_sint | decimal | ->>>,>>>,>>>,>>9.99 | Valor Saldo Sintético | | |
tta_val_apurac_restdo_sint | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração de Resultado Sintético | | |
tta_val_apurac_restdo_sint_db | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração de Resultado Sintético Débito | | |
tta_val_apurac_restdo_sint_cr | decimal | ->>,>>>,>>>,>>9.99 | Valor Apuração de Resultado Sintético Crédito | | |
tta_val_apurac_restdo_sint_acum | decimal | ->>>,>>>,>>>,>>9.99 | Valor Apuração Resultado Final Sintético | | |
tta_val_movto_empenh | decimal | ->>,>>>,>>>,>>9.99 | Valor Movimento Empenhado | | |
tta_qtd_sdo_ctbl_db | decimal | >>>,>>>,>>9.99 | Quantidade Débito | | |
tta_qtd_sdo_ctbl_cr | decimal | >>>,>>>,>>9.99 | Quantidade Crédito | | |
tta_qtd_sdo_ctbl_fim | decimal | ->>>,>>>,>>9.99 | Quantidade Final | | |
ttv_val_movto_ctbl | decimal | >>>,>>>,>>>,>>9.99 | Valor movimento contábil | | |
tta_qtd_movto_empenh | decimal | ->>>>,>>9.9999 | Quantidade Movimento Empenhado | | |
def temp-table tt_retorna_sdo_ctbl no-undo
field tta_num_seq as integer format ">>>,>>9" initial 0 label "Sequência" column-label "NumSeq"
field tta_cod_empresa as character format "x(3)" label "Empresa" column-label "Empresa"
field tta_cod_finalid_econ as character format "x(10)" label "Finalidade" column-label "Finalidade"
field tta_cod_plano_cta_ctbl as character format "x(8)" label "Plano Contas" column-label "Plano Contas"
field tta_cod_cta_ctbl as character format "x(20)" label "Conta Contábil" column-label "Conta Contábil"
field tta_cod_plano_ccusto as character format "x(8)" label "Plano Centros Custo" column-label "Plano Centros Custo"
field tta_cod_ccusto as Character format "x(11)" label "Centro Custo" column-label "Centro Custo"
field tta_cod_proj_financ as character format "x(20)" label "Projeto" column-label "Projeto"
field tta_cod_cenar_ctbl as character format "x(8)" label "Cenário Contábil" column-label "Cenário Contábil"
field tta_cod_estab as character format "x(3)" label "Estabelecimento" column-label "Estab"
field tta_cod_unid_negoc as character format "x(3)" label "Unid Negócio" column-label "Un Neg"
field tta_dat_sdo_ctbl as date format "99/99/9999" initial ? label "Data Saldo Contábil" column-label "Data Saldo Contábil"
field tta_val_sdo_ctbl_db as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Movto Débito" column-label "Movto Débito"
field tta_val_sdo_ctbl_cr as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Movto Crédito" column-label "Movto Crédito"
field tta_val_sdo_ctbl_fim as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Saldo Contábil Final" column-label "Saldo Contábil Final"
field tta_val_apurac_restdo as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apuração Resultado" column-label "Apuração Resultado"
field tta_val_apurac_restdo_db as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apuração Restdo DB" column-label "Apuração Restdo DB"
field tta_val_apurac_restdo_cr as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apuração Restdo CR" column-label "Apuração Restdo CR"
field tta_val_apurac_restdo_acum as decimal format "->>>>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apuracao Final" column-label "Apuracao Final"
field tta_val_sdo_ctbl_db_sint as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Movto Débito Sint" column-label "Movto Débito Sint"
field tta_val_sdo_ctbl_cr_sint as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Movto Crédito Sint" column-label "Movto Crédito Sint"
field tta_val_sdo_ctbl_fim_sint as decimal format "->>>>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Saldo Sintético" column-label "Saldo Sintético"
field tta_val_apurac_restdo_sint as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apuracao Resultado" column-label "Apuracao Resultado"
field tta_val_apurac_restdo_sint_db as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apur Restdo Sint DB" column-label "Apur Restdo Sint DB"
field tta_val_apurac_restdo_sint_cr as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apur Restdo Sint CR" column-label "Apur Restdo Sint CR"
field tta_val_apurac_restdo_sint_acum as decimal format "->>>>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Apur Result Sint" column-label "Apur Result Sint"
field tta_val_movto_empenh as decimal format "->>,>>>,>>>,>>9.99" decimals 9 initial 0 label "Movto Empenhado" column-label "Movto Empenhado"
field tta_qtd_sdo_ctbl_db as decimal format ">>>,>>>,>>9.99" decimals 2 initial 0 label "Quantidade DB" column-label "Quantidade DB"
field tta_qtd_sdo_ctbl_cr as decimal format ">>>,>>>,>>9.99" decimals 2 initial 0 label "Quantidade CR" column-label "Quantidade CR"
field tta_qtd_sdo_ctbl_fim as decimal format "->>>,>>>,>>9.99" decimals 2 initial 0 label "Quantidade Final" column-label "Quantidade Final"
field ttv_val_movto_ctbl as decimal format ">>>,>>>,>>>,>>9.99" decimals 2
field tta_qtd_movto_empenh as decimal format "->>>>,>>9.9999" decimals 4 initial 0 label "Qtde Movto Empenhado" column-label "Qtde Movto Empenhado"
index tt_cta
tta_cod_plano_cta_ctbl ascending
tta_cod_cta_ctbl ascending
index tt_id is primary unique
tta_cod_empresa ascending
tta_cod_finalid_econ ascending
tta_cod_plano_cta_ctbl ascending
tta_cod_cta_ctbl ascending
tta_cod_plano_ccusto ascending
tta_cod_ccusto ascending
tta_cod_proj_financ ascending
tta_cod_cenar_ctbl ascending
tta_cod_estab ascending
tta_cod_unid_negoc ascending
tta_dat_sdo_ctbl ascending
tta_num_seq ascending
index tt_id2
tta_cod_empresa ascending
tta_cod_finalid_econ ascending
tta_cod_plano_cta_ctbl ascending
tta_cod_cta_ctbl ascending
tta_cod_proj_financ ascending
tta_cod_cenar_ctbl ascending
tta_cod_estab ascending
tta_cod_unid_negoc ascending
tta_dat_sdo_ctbl ascending
index tt_seq
tta_num_seq ascending
.
3) Tabela de erros
Tabela Temporária | Descrição | Entrada/Saída |
tt_log_erros | Retorna os erros do processo. | Saída |
Atributo | Tipo | Formato | Descrição | Obrigatório | Evolução |
ttv_num_seq | integer | >>>,>>9 | Seqüência | | |
ttv_num_cod_erro | integer | >>>>,>>9 | Número | | |
ttv_des_erro | character | x(50) | Inconsistência | | |
ttv_des_ajuda | character | x(50) | Ajuda | | |
def temp-table tt_log_erros no-undo
field ttv_num_seq as integer format ">>>,>>9" label "Seqüência" column-label "Seq"
field ttv_num_cod_erro as integer format ">>>>,>>9" label "Número" column-label "Número"
field ttv_des_erro as character format "x(50)" label "Inconsistência" column-label "Inconsistência"
field ttv_des_ajuda as character format "x(50)" label "Ajuda" column-label "Ajuda"
.
Exemplo de utilizacão da API de Leitura de Saldos
Busca o saldo em 31/10/2005 de todas as contas contábeis e finalidades, do plano de contas e empresa informados.
/*Definição variáveis e temp table*/
/*(1ºParâmetro)*/
def var v_num_vers_integr_api as integer format ">>>>,>>9" no-undo.
/* (2º Parâmetro) */
define temp-table tt_input_leitura_sdo no-undo
field ttv_cod_label as character format "x(8)" label "Label" column-label "Label"
field ttv_des_conteudo as character format "x(40)" label "Texto" column-label "Texto"
field ttv_num_seq_1 as integer format ">>>,>>9"
field ttv_num_seq_2 as integer format ">>>>,>>9".
/* (3º Parâmetro)*/
def temp-table tt_retorna_sdo_ctbl no-undo
field tta_num_seq as int format ">>>,>>9" init 0 label "Sequência" column-label "NumSeq"
field tta_cod_empresa as char format "x(3)" label "Empresa" column-label "Empresa"
field tta_cod_finalid_econ as char format "x(10)" label "Finalidade" column-label "Finalidade"
field tta_cod_plano_cta_ctbl as char format "x(8)" label "Plano Contas" column-label "Plano Contas"
field tta_cod_cta_ctbl as char format "x(20)" label "Conta Contábil" column-label "Conta Contábil"
field tta_cod_plano_ccusto as char format "x(8)" label "Plano Centros Custo" column-label "Plano Centros Custo"
field tta_cod_ccusto as char format "x(11)" label "Centro Custo" column-label "Centro Custo"
field tta_cod_proj_financ as char format "x(20)" label "Projeto" column-label "Projeto"
field tta_cod_cenar_ctbl as char format "x(8)" label "Cenário Contábil" column-label "Cenário Contábil"
field tta_cod_estab as char format "x(3)" label "Estabelecimento" column-label "Estab"
field tta_cod_unid_negoc as char format "x(3)" label "Unid Negócio" column-label "Un Neg"
field tta_dat_sdo_ctbl as date format "99/99/9999" init ? label "Data Saldo Contábil" column-label "Data Saldo Contábil"
field tta_val_sdo_ctbl_db as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Movto Débito" column-label "Movto Débito"
field tta_val_sdo_ctbl_cr as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Movto Crédito" column-label "Movto Crédito"
field tta_val_sdo_ctbl_fim as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Saldo Contábil Final" column-label "Saldo Contábil Final"
field tta_val_apurac_restdo as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apuração Resultado" column-label "Apuração Resultado"
field tta_val_apurac_restdo_db as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apuração Restdo DB" column-label "Apuração Restdo DB"
field tta_val_apurac_restdo_cr as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apuração Restdo CR" column-label "Apuração Restdo CR"
field tta_val_apurac_restdo_acum as dec format "->>>>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apuracao Final" column-label "Apuracao Final"
field tta_val_sdo_ctbl_db_sint as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Movto Débito Sint" column-label "Movto Débito Sint"
field tta_val_sdo_ctbl_cr_sint as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Movto Crédito Sint" column-label "Movto Crédito Sint"
field tta_val_sdo_ctbl_fim_sint as dec format "->>>>,>>>,>>>,>>9.99" decimals 2 init 0 label "Saldo Sintético" column-label "Saldo Sintético"
field tta_val_apurac_restdo_sint as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apuracao Resultado" column-label "Apuracao Resultado"
field tta_val_apurac_restdo_sint_db as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apur Restdo Sint DB" column-label "Apur Restdo Sint DB"
field tta_val_apurac_restdo_sint_cr as dec format "->>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apur Restdo Sint CR" column-label "Apur Restdo Sint CR"
field tta_val_apurac_restdo_sint_acum as dec format "->>>>,>>>,>>>,>>9.99" decimals 2 init 0 label "Apur Result Sint" column-label "Apur Result Sint"
field tta_val_movto_empenh as dec format "->>,>>>,>>>,>>9.99" decimals 9 init 0 label "Movto Empenhado" column-label "Movto Empenhado"
field tta_qtd_sdo_ctbl_db as dec format ">>>,>>>,>>9.99" decimals 2 init 0 label "Quantidade DB" column-label "Quantidade DB"
field tta_qtd_sdo_ctbl_cr as dec format ">>>,>>>,>>9.99" decimals 2 init 0 label "Quantidade CR" column-label "Quantidade CR"
field tta_qtd_sdo_ctbl_fim as dec format "->>>,>>>,>>9.99" decimals 2 init 0 label "Quantidade Final" column-label "Quantidade Final"
field ttv_val_movto_ctbl as dec format ">>>,>>>,>>>,>>9.99" decimals 2
field tta_qtd_movto_empenh as dec format "->>>>,>>9.9999" decimals 4 init 0 label "Qtde Movto Empenhado" column-label "Qtde Movto Empenhado"
index tt_id is primary unique
tta_cod_empresa ascending
tta_cod_finalid_econ ascending
tta_cod_plano_cta_ctbl ascending
tta_cod_cta_ctbl ascending
tta_cod_plano_ccusto ascending
tta_cod_ccusto ascending
tta_cod_proj_financ ascending
tta_cod_cenar_ctbl ascending
tta_cod_estab ascending
tta_cod_unid_negoc ascending
tta_dat_sdo_ctbl ascending
index tt_seq
tta_num_seq ascending.
/* (4º Parâmetro)*/
def temp-table tt_log_erros no-undo
field ttv_num_seq as integer format ">>>,>>9" label "Seqüência" column-label "Seq"
field ttv_num_cod_erro as integer format ">>>>,>>9" label "Número" column-label "Número"
field ttv_des_erro as character format "x(50)" label "Inconsistência" column-label "Inconsistência"
field ttv_des_ajuda as character format "x(50)" label "Ajuda" column-label "Ajuda".
/*Definição dos dados para que seja realizada a leitura de saldos*/
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Empresa"
ttv_des_conteudo = "CED"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 1.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Plano Contas"
ttv_des_conteudo = "testem"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 2.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Leitura"
ttv_des_conteudo = "FOR EACH"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 3.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Condição"
ttv_des_conteudo = "IGUAL"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 4.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Data Final"
ttv_des_conteudo = "31/10/2005"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 5.
/*Execução da api*/
run prgfin/fgl/fgl905zb.py (Input 1,
Input table tt_input_leitura_sdo,
output table tt_retorna_sdo_ctbl,
output table tt_log_erros).
/*Tratamento das temp tables de retorno*/
OUTPUT TO "c:\tmp\saldos.txt".
FOR EACH tt_retorna_sdo_ctbl:
EXPORT tt_retorna_sdo_ctbl.
END.
OUTPUT CLOSE.
OUTPUT TO "c:\tmp\erros.txt".
FOR EACH tt_log_erros:
EXPORT tt_log_erros.
END.
OUTPUT CLOSE.
Para Busca de saldo de mais de um período e definindo finalidade, acrescentar os registros abaixo:
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Condição"
ttv_des_conteudo = "MAIOR OU IGUAL E MENOR OU IGUAL"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 4.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Data Inicial"
ttv_des_conteudo = "31/10/2005"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 5.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Data Final"
ttv_des_conteudo = "31/12/2005"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 6.
CREATE tt_input_leitura_sdo.
ASSIGN ttv_cod_label = "Finalidade Econômica"
ttv_des_conteudo = "corrente"
ttv_num_seq_1 = 1
ttv_num_seq_2 = 7.
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))