[A68-RECUTILS][COMMITTED] rec-rset.a68: add "rec rset num records" and "rec rset num comments"

Jose E. Marchesi jemarch@gnu.org
Sat Apr 5 14:50:47 GMT 2025


---
 src/rec-rset.a68 | 14 ++++++++++++++
 utils/recsel.a68 |  4 +---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/rec-rset.a68 b/src/rec-rset.a68
index 4b5162a..0aff4eb 100644
--- a/src/rec-rset.a68
+++ b/src/rec-rset.a68
@@ -37,3 +37,17 @@ PROC rec rset new = REF REC_RSET:
 
 PROC rec rset gate = (REC_MSET_DATA d) BOOL:
    (d | (REC_RECORD): TRUE, (REC_CMNT): TRUE | FALSE);
+
+# Get the number of records in a given record set.  #
+
+PROC rec rset num records = (REC_RSET rset) INT:
+   (rec mset count (mset OF rset,
+                    (REC_MSET_DATA d) BOOL:
+                       (d | (REC_RECORD): TRUE | FALSE)));
+
+# Get the number of comments in a given record set.  #
+
+PROC rec rset num comments = (REC_RSET rset) INT:
+   (rec mset count (mset OF rset,
+                    (REC_MSET_DATA d) BOOL:
+                       (d | (REC_CMNT): TRUE | FALSE)));
diff --git a/utils/recsel.a68 b/utils/recsel.a68
index 54e911b..ae11d26 100644
--- a/utils/recsel.a68
+++ b/utils/recsel.a68
@@ -105,9 +105,7 @@ Special options:\n\
                          (INT pos, REC_MSET_DATA data) VOID:
                             CASE data
                             IN (REC_RSET rset):
-                                  num records +:= rec mset count (mset OF rset,
-                                                                  (REC_MSET_DATA d) BOOL:
-                                                                     (d | (REC_RECORD): TRUE | FALSE))
+                                  num records +:= rec rset num records (rset)
                             ESAC);
            fputs (stdout, itoa (num records) + "\n")
       ELSE # Emit the resulting record set  #  
-- 
2.30.2



More information about the Algol68 mailing list