Claro, a continuación te muestro el código con los comentarios: 

/*  Se crea un nuevo conjunto de datos llamado "salida" */
data salida; 
    set entrada; /* Datos de entrada que serán usados para el conjunto de datos de salida */

    length saldo_recuperado;  /* Se define la longitud de la variable "saldo_recuperado" */

    /* Se inicia un bloque "do" que se ejecutará solo en la primera iteración del bucle */
    if _N_ = 1 then  
    do;
      declare hash saldos_rec(dataset: "saldos_recuperados(where=(&fecha_negocio lt fecha_fv and &fecha_negocio ge fecha_iv))"); /* Se declara un objeto hash llamado "saldos_rec" */

      saldos_rec.definekey('sk_contrato'); /* Define la clave del objeto hash como "sk_contrato" */

      saldos_rec.definedata('sk_contrato', 'saldo_recuperado'); /* Se definen los datos del objeto hash */

      saldos_rec.definedone(); /* Se finaliza la definición del objeto hash */

      call missing(saldo_recuperado); /* Se llama a la función "missing" para asignar el valor "missing" a la variable "saldo_recuperado" */

    end;

    rc = saldos_rec.find(); /* Se busca la clave en el objeto hash y se almacena el resultado en la variable "rc" */

    saldo_impagado=sum(saldo_impagado,-saldo_recuperado) /* Se calcula el saldo impagado */
run;

proc sort data=salida; /* Se utiliza un procedimiento "sort" */

by sk_contrato descending; /* Se ordena el conjunto de datos "salida" en orden descendente por la variable "sk_contrato" */

run;
แน่นอน ด้านล่างนี้ฉันจะแสดงโค้ดพร้อมกับความคิดเห็น: /* มีการสร้างชุดข้อมูลใหม่ชื่อ "output" */ data output; ตั้งค่าอินพุต; /* ข้อมูลอินพุตที่จะใช้สำหรับชุดข้อมูลเอาต์พุต */ length recovery_balance; /* กำหนดความยาวของตัวแปร "recovered_balance" แล้ว */ /* บล็อก "do" เริ่มทำงานซึ่งจะดำเนินการเฉพาะในการวนซ้ำครั้งแรกของลูปเท่านั้น */ ถ้า _N_ = 1 ให้ทำ; ประกาศแฮช rec_balances (ชุดข้อมูล: "recovered_balances (โดยที่ = (&business_date lt fv_date และ &business_date ge iv_date))"); /* มีการประกาศวัตถุแฮชที่เรียกว่า "saldos_rec" */ balances_rec.definekey('sk_contract'); /* กำหนดคีย์ของวัตถุแฮชเป็น "sk_contract" */ rec_balances.defata('sk_contract', 'recovered_balance'); /* ข้อมูลของวัตถุแฮชถูกกำหนดไว้ */ balances_rec.defone(); /* คำจำกัดความของวัตถุแฮชได้รับการสรุปแล้ว */ การเรียกหายไป (recovered_balance); /* ฟังก์ชัน "missing" ถูกเรียกเพื่อกำหนดค่า "missing" ให้กับตัวแปร "recovered_balance" */ end; rc = rec_balances.find(); /* ค้นหาคีย์ในวัตถุแฮชและผลลัพธ์จะถูกเก็บไว้ในตัวแปร "rc" */ unpaid_balance=sum(unpaid_balance,-recovered_balance) /* ยอดค้างชำระถูกคำนวณ */ run; ข้อมูลการเรียงลำดับ proc = เอาต์พุต; /* ใช้ขั้นตอน "เรียงลำดับ" */ โดย sk_contrato จากมากไปน้อย; /* ชุดข้อมูล "output" เรียงลำดับจากมากไปน้อยตามตัวแปร "sk_contract" */ run;
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence