From 53bf3f4de125d211d215a7e94da8a092a9790125 Mon Sep 17 00:00:00 2001
From: Steven Franke <s.j.franke@icloud.com>
Date: Thu, 16 Feb 2023 09:00:29 -0600
Subject: [PATCH] New command-line program hash22calc will print the 22-bit
 hash value of a valid callsign.

---
 lib/77bit/hash22calc.f90 | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 lib/77bit/hash22calc.f90

diff --git a/lib/77bit/hash22calc.f90 b/lib/77bit/hash22calc.f90
new file mode 100644
index 000000000..fbebeb512
--- /dev/null
+++ b/lib/77bit/hash22calc.f90
@@ -0,0 +1,40 @@
+program hash22calc 
+! Given a valid callsign, calculate and print its 22-bit hash.
+
+  use packjt77
+  
+  character*13 callsign
+  character*1  c
+  character*6  basecall
+  logical      cok
+
+  nargs=iargc()
+  if(nargs.ne.1) then
+     print*,'Given a valid callsign, print its 22-bit hash.'
+     print*,'Usage: hashcalc <callsign>'
+     go to 999
+  endif
+  call getarg(1,callsign)
+
+! convert to upper case
+  ilen=len(trim(callsign)) 
+  do i=1, ilen
+     c=callsign(i:i)
+     if(c.ge.'a' .and. c.le.'z') c=char(ichar(c)-32)  !Force upper case
+     callsign(i:i)=c
+  enddo 
+
+! check for a valid callsign
+  call chkcall(callsign,basecall,cok)
+  if(.not.cok) then
+    print*,'Invalid callsign'
+    goto 999
+  endif
+
+! calculate the hash
+  n22 = ihashcall(callsign,22)
+  write(*,'(a,i7.7)') callsign,n22
+
+999 end program hash22calc
+
+include '../chkcall.f90'