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'