/*このSASコードは、「入力」と呼ばれる既存のテーブルから「出力」と呼ばれる新しいテーブルを作成します。*/

データ終了;
/*「入り口」テーブルが読まれます。/
入力を設定します。
/変数「balance_rectioned」の長さが定義されています。/
length_rectionedバランス。
/最前列（n = 1）の場合、ハッシュが「balances_recupperated」テーブルから作成されます。/
n = 1の場合
する;
/ハッシュ「Balances_Rec」は、ビジネス日の条件を使用して定義されます。/
Hash Balances_Recを宣言します（データセット： "バランス
/ハッシュキーは「sk_contrato」です。/
balances_rec.definekey（ 'sk_contrato'）;
/キーに関連付けられているデータは、「sk_contrato」と「balance_rection」です。/
balances_rec。
/ハッシュ定義の終わり。/
balances_rec.definedone（）;
/欠損値は、変数「balance_rection」に割り当てられます。/
call missing（balance_ record）;
終わり;
/ハッシュ「Balances_Rec」の対応する値が求められています。/
rc = balances_rec.find（）;
/「balance_impaid」の値が更新され、「balance_ balance」が差し引かれます。*/
balance_impaged = sum（balance_impaged、-saldo_recuperada）
走る;

/*「exit」テーブルは、「sk_contrato」によって下降形で注文されます。*/
sort data = output;
SK_CONTRATOの降下。
走る;
/* Este código SAS crea una nueva tabla llamada "salida" a partir de una tabla existente llamada "entrada". */

data salida;
/* Se lee la tabla "entrada". /
set entrada;
/ Se define la longitud de la variable "saldo_recuperado". /
length saldo_recuperado;
/ Si es la primera fila (N=1), se crea un hash de la tabla "saldos_recuperados". /
if N = 1 then
do;
/ Se define el hash "saldos_rec" utilizando una condición en la fecha de negocio. /
declare hash saldos_rec(dataset: "saldos_recuperados(where=(&fecha_negocio lt fecha_fv and &fecha_negocio ge fecha_iv))");
/ La clave del hash es "sk_contrato". /
saldos_rec.definekey('sk_contrato');
/ Los datos asociados a la clave son "sk_contrato" y "saldo_recuperado". /
saldos_rec.definedata('sk_contrato', 'saldo_recuperado');
/ Se finaliza la definición del hash. /
saldos_rec.definedone();
/ Se asigna un valor missing a la variable "saldo_recuperado". /
call missing(saldo_recuperado);
end;
/ Se busca el valor correspondiente en el hash "saldos_rec". /
rc = saldos_rec.find();
/ Se actualiza el valor de "saldo_impagado" restando el "saldo_recuperado". */
saldo_impagado=sum(saldo_impagado,-saldo_recuperado)
run;

/* Se ordena la tabla "salida" por "sk_contrato" en forma descendente. */
proc sort data=salida;
by sk_contrato descending;
run;