| 
									
										
										
										
											2018-06-27 15:07:04 -04:00
										 |  |  | program test28
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |   use packjt77
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  |   parameter (NTOKENS=2063592,MAX22=4194304)
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |   character*13 arg,call_00,call_0,call_1
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  |   character*1 cerr
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |   logical unpk28_success
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  |   nargs=iargc()
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |   n28=-1
 | 
					
						
							|  |  |  |   if(nargs.eq.1) then
 | 
					
						
							|  |  |  |      call getarg(1,arg)
 | 
					
						
							|  |  |  |      read(arg,'(i13)',err=2) n28
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  |   if(n28.ge.0) go to 100
 | 
					
						
							|  |  |  |   
 | 
					
						
							|  |  |  | 2 open(10,file='test28.txt',status='old')
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   write(*,1000)
 | 
					
						
							|  |  |  | 1000 format('Encoded text   Recovered text      n28 Err?   Type'/60('-'))
 | 
					
						
							|  |  |  |   
 | 
					
						
							|  |  |  |   do iline=1,999999
 | 
					
						
							|  |  |  |      if(nargs.eq.0) then
 | 
					
						
							|  |  |  |         read(10,'(a13)',end=999) call_0
 | 
					
						
							|  |  |  |      else
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |         call_0=arg
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  |      endif
 | 
					
						
							|  |  |  |      if(call_0.eq.'             ') exit
 | 
					
						
							|  |  |  |      if(call_0(1:3).eq.'CQ ' .and. call_0(4:4).ne.' ') call_0(3:3)='_'
 | 
					
						
							|  |  |  |      call_1='             '
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |      call_00=call_0
 | 
					
						
							|  |  |  |      call pack28(call_00,n28)
 | 
					
						
							|  |  |  |      call unpack28(n28,call_1,unpk28_success)
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  |      cerr=' '
 | 
					
						
							|  |  |  |      if(call_0.ne.call_1) cerr='*'
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  |      if(call_0(1:3).eq.'CQ_') call_0(3:3)=' '
 | 
					
						
							|  |  |  |      if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
 | 
					
						
							|  |  |  |      if(n28.lt.NTOKENS) write(*,1010) call_0,call_1,n28,cerr
 | 
					
						
							|  |  |  | 1010 format(a13,2x,a13,i10,2x,a1,2x,'Special token')
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |      if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) then
 | 
					
						
							|  |  |  |         call_00=call_0
 | 
					
						
							|  |  |  |         call save_hash_call(call_00,n10,n12,n22)
 | 
					
						
							|  |  |  |         write(*,1012) call_0,call_1,n28,cerr,n22
 | 
					
						
							|  |  |  | 1012    format(a13,2x,a13,i10,2x,a1,2x,'22-bit hash',i15)
 | 
					
						
							|  |  |  |      endif
 | 
					
						
							| 
									
										
										
										
											2018-06-28 11:48:42 -04:00
										 |  |  |      if(n28.ge.NTOKENS+MAX22) write(*,1014) call_0,call_1,n28,cerr
 | 
					
						
							|  |  |  | 1014 format(a13,2x,a13,i10,2x,a1,2x,'Standard callsign')
 | 
					
						
							|  |  |  |      if(nargs.gt.0) exit
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  |   enddo
 | 
					
						
							| 
									
										
										
										
											2020-01-03 13:34:56 -05:00
										 |  |  |   go to 999
 | 
					
						
							|  |  |  |   
 | 
					
						
							|  |  |  | 100 call unpack28(n28,call_1,unpk28_success)
 | 
					
						
							|  |  |  |   cerr=' '
 | 
					
						
							|  |  |  |   if(.not.unpk28_success) cerr='*'
 | 
					
						
							|  |  |  |   if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
 | 
					
						
							|  |  |  |   if(n28.lt.NTOKENS) write(*,2010) n28,call_1,cerr
 | 
					
						
							|  |  |  | 2010 format(i10,2x,a13,2x,a1,2x,'Special token')
 | 
					
						
							|  |  |  |   if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) write(*,2012) n28,call_1,cerr
 | 
					
						
							|  |  |  | 2012 format(i10,2x,a13,2x,a1,2x,'22-bit hash')
 | 
					
						
							|  |  |  |   if(n28.ge.NTOKENS+MAX22) write(*,2014) n28,call_1,cerr
 | 
					
						
							|  |  |  | 2014 format(i10,2x,a13,2x,a1,2x,'Standard callsign')
 | 
					
						
							| 
									
										
										
										
											2018-06-27 11:08:39 -04:00
										 |  |  |   
 | 
					
						
							| 
									
										
										
										
											2018-06-27 15:07:04 -04:00
										 |  |  | 999 end program test28
 |