The DFA package [ver. 0.5.8]

The DFA package [ver. 0.5.8]

Package regenerated with SAS Packages Framework, version 20250126. No functional changes, documentation cleaned up.
This commit is contained in:
Bart Jablonski
2026-01-26 17:26:29 +01:00
parent 558ce948dd
commit e0ca1ea075
5 changed files with 1930 additions and 125 deletions

View File

@@ -7,7 +7,7 @@ a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a pr
Run `%helpPackage(DFA,createDFArray)` to find examples.
SHA256 digest for the latest version of `DFA`: F*012375D87F66EB3A7BF5DDD0CC5AEE28851733EE33CC63231DF9045BEB958168
SHA256 digest for the latest version of `DFA`: F*643FBE2B7AE1425FC0240139813B93AE2C6BCFFDF6A0CFAEBEC11F83D3548E57
[**Documentation for DFA**](./dfa.md "Documentation for DFA")

352
dfa.md
View File

@@ -1,24 +1,30 @@
- [The DFA package](#dfa-package)
- [Content description](#content-description)
* [`%createDFArray()` macro](#createdfarray-macro)
* [`%createDHArray()` macro](#createdharray-macro)
* [`%createDHFifo()` macro](#createdhfifo-macro)
* [`%createDHOrdStack()` macro](#createdhordstack-macro)
* [`%createDHPrtQueue()` macro](#createdhprtqueue-macro)
* [`%createDHStack()` macro](#createdhstack-macro)
* [`bit64orPROTOdfa()` proto function](#bit64orprotodfa-proto-function)
* [`bit64andPROTOdfa()` proto function](#bit64andprotodfa-proto-function)
* [`bit64orDFA()` subroutine](#bit64ordfa-function)
* [`bit64andDFA()` subroutine](#bit64anddfa-function)
* [`%createDFBitmap()` macro](#createdfbitmap-macro)
* [`generateArrays` exec](#createdhprtqueue-exec)
* [`generateArrays` clean](#createdhprtqueue-clean)
# Documentation for the `DFA` package.
----------------------------------------------------------------
*Dynamic function arrays and other useful data structures*
----------------------------------------------------------------
### Version information:
- Package: DFA
- Version: 0.5.8
- Generated: 2026-01-26T15:19:02
- Author(s): Bartosz Jablonski (yabwon@gmail.com)
- Maintainer(s): Bartosz Jablonski (yabwon@gmail.com)
- License: MIT
- File SHA256: `F*643FBE2B7AE1425FC0240139813B93AE2C6BCFFDF6A0CFAEBEC11F83D3548E57` for this version
- Content SHA256: `C*E2E883D8F8A7F7FCB97C2B7240FD5E70A8A6F2A6B3F0F75119F47886338C6B0C` for this version
* [License](#license)
---
# The `DFA` package, version: `0.5.8`;
---
# The DFA package [ver. 0.5.7] <a name="dfa-package"></a> ###############################################
# The DFA package [ver. 0.5.8] <a name="dfa-package"></a> ###############################################
The **DFA** (a.k.a. *Dynamic Function Array*) package implements:
- dynamic numeric and character arrays,
@@ -36,30 +42,50 @@ Few exemplary functions are also generated.
See particular macro help for further details.
---
Package contains:
1. macro createdfarray
2. macro createdharray
3. macro createdhfifo
4. macro createdhordstack
5. macro createdhprtqueue
6. macro createdhstack
7. proto bit64andprotodfa
8. proto bit64orprotodfa
9. functions bit64anddfa
10. functions bit64ordfa
11. macro createdfbitmap
12. exec generatearrays
13. clean generatearrays
*SAS package generated by generatePackage, version 20231111*
The SHA256 hash digest for package DFA:
`F*012375D87F66EB3A7BF5DDD0CC5AEE28851733EE33CC63231DF9045BEB958168`
---
# Content description ############################################################################################
---
Required SAS Components:
- Base SAS Software
---
---------------------------------------------------------------------
*SAS package generated by SAS Package Framework, version `20260125`,*
*under `WIN`(`X64_10PRO`) operating system,*
*using SAS release: `9.04.01M9P06042025`.*
---------------------------------------------------------------------
# The `DFA` package content
The `DFA` package consists of the following content:
1. [`%createdfarray()` macro ](#createdfarray-macro-1 )
2. [`%createdharray()` macro ](#createdharray-macro-2 )
3. [`%createdhfifo()` macro ](#createdhfifo-macro-3 )
4. [`%createdhordstack()` macro ](#createdhordstack-macro-4 )
5. [`%createdhprtqueue()` macro ](#createdhprtqueue-macro-5 )
6. [`%createdhstack()` macro ](#createdhstack-macro-6 )
7. [`bit64andprotodfa()` proto ](#bit64andprotodfa-proto-7 )
8. [`bit64orprotodfa()` proto ](#bit64orprotodfa-proto-8 )
9. [`bit64anddfa()` function ](#bit64anddfa-functions-9 )
10. [`bit64ordfa()` function ](#bit64ordfa-functions-10 )
11. [`%createdfbitmap()` macro ](#createdfbitmap-macro-11 )
12. [`generatearrays` exec ](#generatearrays-exec-12 )
13. [`generatearrays` clean ](#generatearrays-clean-13 )
14. [License note](#license)
---
## `%createdfarray()` macro <a name="createdfarray-macro-1"></a> ######
## >>> `%createDFArray()` macro: <<< <a name="createdfarray-macro"></a> #######################
The `%createDFArray()` macro allows to generate
@@ -122,7 +148,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -172,6 +198,7 @@ and accepts the following list of arguments and values:
The `position` and the `value` arguments are **outargs**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Searchable, and Immutable array:
@@ -309,6 +336,12 @@ The `position` and the `value` arguments are **outargs**, i.e. can be changed by
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdharray()` macro <a name="createdharray-macro-2"></a> ######
## >>> `%createDHArray()` macro: <<< <a name="createdharray-macro"></a> #######################
The `%createDHArray()` macro allows to generate
@@ -360,7 +393,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -397,6 +430,7 @@ and accepts the following list of arguments and values:
The `position` and the `value` arguments are **outargs**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Hash-based, and Character array:
@@ -464,6 +498,12 @@ The `position` and the `value` arguments are **outargs**, i.e. can be changed by
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdhfifo()` macro <a name="createdhfifo-macro-3"></a> ######
## >>> `%createDHFifo()` macro: <<< <a name="createdhfifo-macro"></a> #######################
The `%createDHFifo()` macro allows to generate
@@ -519,7 +559,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -550,7 +590,7 @@ and accepts the following list of arguments and values:
The `value` argument is **outarg**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Hash-based, and Character fifo:
@@ -639,6 +679,12 @@ The `value` argument is **outarg**, i.e. can be changed by the function.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdhordstack()` macro <a name="createdhordstack-macro-4"></a> ######
## >>> `%createDHOrdStack()` macro: <<< <a name="createdhordstack-macro"></a> #######################
The `%createDHOrdStack()` macro allows to generate
@@ -699,7 +745,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -732,7 +778,7 @@ and accepts the following list of arguments and values:
The `value` argument is **outarg**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Hash-based, and Character Descending Ordered stack:
@@ -804,6 +850,12 @@ The `value` argument is **outarg**, i.e. can be changed by the function.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdhprtqueue()` macro <a name="createdhprtqueue-macro-5"></a> ######
## >>> `%createDHPrtQueue()` macro: <<< <a name="createdhprtqueue-macro"></a> #######################
@@ -860,7 +912,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -901,7 +953,7 @@ and accepts the following list of arguments and values:
The `position` and the `value` arguments are **outargs**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Hash-based, and Character Priority queue:
@@ -965,6 +1017,12 @@ The `position` and the `value` arguments are **outargs**, i.e. can be changed by
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdhstack()` macro <a name="createdhstack-macro-6"></a> ######
## >>> `%createDHStack()` macro: <<< <a name="createdhstack-macro"></a> #######################
The `%createDHStack()` macro allows to generate
@@ -1020,7 +1078,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -1050,7 +1108,7 @@ and accepts the following list of arguments and values:
The `value` argument is **outarg**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Dynamic, Hash-based, and Character stack:
@@ -1128,31 +1186,11 @@ The `value` argument is **outarg**, i.e. can be changed by the function.
---
## >>> `bit64orPROTOdfa()` proto function: <<< <a name="bit64orprotodfa-proto-function"></a> #######################
The **bit64orPROTOdfa()** is external *C* function,
this is the implementation of the *bitwise OR* operation
on doubles. A double is returned.
**Caution!** For SAS numeric values *only* operations on first 53 bits are valid!
The function is used **internally** by functions in the *DFA* package.
### SYNTAX: ###################################################################
The basic syntax is the following:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
bit64orPROTOdfa(i, j)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Arguments description**:
1. `i` - A double numeric argument.
2. `j` - A double numeric argument.
---
## `bit64andprotodfa()` proto <a name="bit64andprotodfa-proto-7"></a> ######
## >>> `bit64andPROTOdfa()` proto function: <<< <a name="bit64andprotodfa-proto-function"></a> #######################
The **bit64andPROTOdfa()** is external *C* function,
@@ -1178,62 +1216,41 @@ bit64andPROTOdfa(i, j)
---
## >>> `bit64orDFA()` subroutine: <<< <a name="bit64ordfa-function"></a> #######################
---
## `bit64orprotodfa()` proto <a name="bit64orprotodfa-proto-8"></a> ######
## >>> `bit64orPROTOdfa()` proto function: <<< <a name="bit64orprotodfa-proto-function"></a> #######################
The **bit64orDFA()** function is an alternative to
the 32 bit bitwise `BOR()` function working on SAS numerics.
Allows to work on *up to* 53 bits of SAS numeric value.
The **bit64orPROTOdfa()** is external *C* function,
this is the implementation of the *bitwise OR* operation
on doubles. A double is returned.
The `bit64orDFA()` is an *internal* function of the `DFA` package.
**Caution!** For SAS numeric values *only* operations on first 53 bits are valid!
The function is used **internally** by functions in the *DFA* package.
### SYNTAX: ###################################################################
The basic syntax is the following, the `<...>` means optional parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
bit64orDFA(a, b)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The basic syntax is the following:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
bit64orPROTOdfa(i, j)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Arguments description**:
1. `a` - Argument is a SAS numeric values.
1. `i` - A double numeric argument.
2. `B` - Argument is a SAS numeric values.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Basic test of `bit64orDFA()` and `bit64andDFA()`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
options ls = max ps = max;
%let M = 53 ; %* 53 is maximum valid value;
data _null_;
array bitmask [ 0: &M] _temporary_ ;
do P = 1 to &M ;
bitmask[P] = 2**(P-1) ;
put bitmask[P] = binary54. @;
put bitmask[P] = best32.;
end ;
bitmask[0] = bitmask[&M.] ;
put bitmask[0] = best32. /;
a=0;
put a = binary54.;
do P = 1 to &M ;
a = BIT64ORDFA (a, bitmask[P]) ;
put a = binary54.;
end;
put;
b = 0;
put b = binary54./;
do P = 1 to &M ;
b + (BIT64ANDDFA (a, bitmask[P]) ne .) ;
put b = best32.;
end;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. `j` - A double numeric argument.
---
---
## `bit64anddfa()` function <a name="bit64anddfa-functions-9"></a> ######
## >>> `bit64andDFA()` subroutine: <<< <a name="bit64anddfa-function"></a> #######################
The **bit64andDFA()** function is an alternative to
@@ -1255,6 +1272,7 @@ bit64andDFA(a, b)
2. `B` - Argument is a SAS numeric values.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Basic test of `bit64orDFA()` and `bit64andDFA()`
@@ -1290,6 +1308,73 @@ bit64andDFA(a, b)
---
---
## `bit64ordfa()` function <a name="bit64ordfa-functions-10"></a> ######
## >>> `bit64orDFA()` subroutine: <<< <a name="bit64ordfa-function"></a> #######################
The **bit64orDFA()** function is an alternative to
the 32 bit bitwise `BOR()` function working on SAS numerics.
Allows to work on *up to* 53 bits of SAS numeric value.
The `bit64orDFA()` is an *internal* function of the `DFA` package.
### SYNTAX: ###################################################################
The basic syntax is the following, the `<...>` means optional parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
bit64orDFA(a, b)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Arguments description**:
1. `a` - Argument is a SAS numeric values.
2. `B` - Argument is a SAS numeric values.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Basic test of `bit64orDFA()` and `bit64andDFA()`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas
options ls = max ps = max;
%let M = 53 ; %* 53 is maximum valid value;
data _null_;
array bitmask [ 0: &M] _temporary_ ;
do P = 1 to &M ;
bitmask[P] = 2**(P-1) ;
put bitmask[P] = binary54. @;
put bitmask[P] = best32.;
end ;
bitmask[0] = bitmask[&M.] ;
put bitmask[0] = best32. /;
a=0;
put a = binary54.;
do P = 1 to &M ;
a = BIT64ORDFA (a, bitmask[P]) ;
put a = binary54.;
end;
put;
b = 0;
put b = binary54./;
do P = 1 to &M ;
b + (BIT64ANDDFA (a, bitmask[P]) ne .) ;
put b = best32.;
end;
run;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
---
## `%createdfbitmap()` macro <a name="createdfbitmap-macro-11"></a> ######
## >>> `%createDFBitmap()` macro: <<< <a name="createdfbitmap-macro"></a> #######################
The `%createDFBitmap()` macro allows to generate
@@ -1346,7 +1431,7 @@ The basic syntax is the following, the `<...>` means optional parameters:
* `header=` - *Optional*, the default value is `1`. Indicates if
the `proc fcmp outlib = &outlib.;` header is added to
the executed code. If not 1 then no header is added.
**Created function arguments description**:
A function generated by the macro is:
@@ -1382,6 +1467,7 @@ and accepts the following list of arguments and values:
The `position` and the `value` arguments are **outargs**, i.e. can be changed by the function.
### EXAMPLES AND USECASES: ####################################################
**EXAMPLE 1.** Bitmap of type 32:
@@ -1534,6 +1620,11 @@ NOTE: DATA statement used (Total process time):
---
---
## `generatearrays` exec <a name="generatearrays-exec-12"></a> ######
## >>> `generateArrays` exec: <<< <a name="createdhprtqueue-exec"></a> #######################
The generateArrays exec file provides a **list of automatically generated examples** of functions
@@ -1563,6 +1654,12 @@ The list of provided examples is the following:
The `outlib=` option is set to `work.DFAfcmp.package`. The `cmplib=` option is updated automatically.
---
---
## `generatearrays` clean <a name="generatearrays-clean-13"></a> ######
## >>> `generateArrays` clean: <<< <a name="createdhprtqueue-clean"></a> #######################
The generateArrays clean file clears the list of automatically generated examples of functions
@@ -1572,9 +1669,15 @@ The `cmplib=` option is updated automatically.
---
## License ####################################################################
Copyright (c) 2019 Bartosz Jablonski
---
---
# License <a name="license"></a> ######
Copyright (c) 2019 - 2026 Bartosz Jablonski
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1593,5 +1696,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---

BIN
dfa.zip

Binary file not shown.

1701
hist/0.5.8/dfa.md Normal file

File diff suppressed because it is too large Load Diff

BIN
hist/0.5.8/dfa.zip Normal file

Binary file not shown.