Newsgroup: it.comp.retrocomputing
Titolo: SSP - £POPLIB

Non venitemi a dire che non siamo su comp.sys.ibm.sys3x... è morto e 
sepolto. Magari qui interessa a qualcuno.
 
Ho copiato £POPLIB su di un floppy, e mi accingo a trasferirla sull'altro 
5364.
Su consiglio di Gerry77 ho verificato il contenuto della £POPLIB, alla 
ricerca di eventuali procedure automatiche (LOAD, SAVE)
Ho trovato solo POPLOAD.
Ho notato, però, che al primo avvio non funzionano i comandi LIBR, FILE...
Questi sono attivi solo dopo la prima esecuzione di POP.
Evidentemente, essa inizializza la liberia rendendo accessibili le 
scorciatoie.
Ho verificato, poi, cosa fosse presente in £LIBRARY relativamente a 
£POPLIB.
C'è solo POP, come pensavo.
A "lume di naso", POP richiama POPLOAD.
 
Salvo pareri diversi, mi comporterò così.
Ripristino la £POPLIB con RESTLIBR in £POPLIB
 
Copio POP da £POPLIB in £LIBRARY con LIBRLIBR
 
Dovrebbe bastare...
Vi farò sapere (sempre che siate interessati :DDDDD )
 
 
 
-- 
http://www.supervinx.com/Retrocomputer
 


 
Come sai il 36 lavora con una sola libreria in linea (oltre a ŁLIBRARY)
Quindi se vuoi eseguire un comando che sta in un certa
libreria prima devi associarti ad essa e poi lanciare il comando.
 
Esempio:
Potresti  scrivere sulla riga comandi:
 
1) SLIB ŁPOPLIB
 
e poi:
 
2) MENU POP
 
 
Se vuoi puoi scrivere una procedura che faccia per te il lavoro.
Ad es. potresti scrivere con il SEU e memorizzare nella ŁLIBRARY
la procedura POP1 cosi' fatta:
 
// LIBRARY NAME-ŁPOPLIB, SESSION-YES
// MENU POP,ŁPOPLIB
 
 
Successiovamente, qualunque sia la libreria cui sei associato,
digitando  POP1 sulla riga dei comandi....
otterrai lo stesso risultato che hai ottenuto
con 1) e 2).
 
ciao
fm
 
 
 
 

Ho incontrato un problema...
Per far spazio, ho eliminato la storia del sistema (HISTORY) (anche se 
forse è inutile, se occupa uno spazio riservato)
Ci sono 720 blocchi (da quanto ?) liberi, mentre la £POPLIB occupa 980 
blocchi da 1K.
 
Mi sono fatto aiutare dal menu per la sintassi di RESTLIBR, ed ho 
riempito solo i campi obbligatori (credo che gli altri servano  a 
riservare spazio per una futura espandibilità del file).
Ho ricevuto un errore non chiaro, come se mancasse spazio.
Ripensandoci ora (prima ero con un amico), lo spazio c'è ma non è 
contiguo.
 
Devo usare COMPRESS ?

 Devo usare COMPRESS ?
 
Puoi usarlo....quando c'e' poco spazio su disco
la procedura e' velocissima, e naturalmente
serve a poco.
Dovresti salvare su dischetto files o librerie
e poi cancellarli ( in doppia copia, se son dati importanti
oppure come nel tuo caso se i dischetti sono vetusti :P)
 
Quando ci sara' una porzione di disco accettabile
potrai fare il compress.
 
Tieni conto di una peculiarità del 36:
tutto lo spazio allocato per un file e' contiguo.
Non esistono frammenti del file concatenati.
Quando deve essere esteso, *tutto* il file
viene spostato (in un lampo!) in una nuova posizione sul disco.
 
Anche per questo motivo non era bene salire troppo
in alto con l'occupazione dello spazio....
diciamo che il 90% dovrebbe essere una soglia
invalicabile, mentre il degrado di prestazioni
IMVHO si comincia a percepire oltre il 60%.
 
 
ciao
fm
 
 
 
 
 

COMPRESS ha funzionato.
Ha radunato i 720 blocchi ed ho potuto effettuare RESTLIBR.
Se eseguo 
SLIB £POPLIB
ho accesso a POP, FILE, LIBR
Ho copiato il membro POP (tipo LOAD) in £LIBRARY.
Nonostante questo se non eseguo SLIB £POPLIB, POP non è eseguibile.
Devo ricaricare il sistema prima che le modifiche a £LIBRARY siano 
visibili oppure ho sbagliato qualcosa ?
 
In ogni caso poco male: POPLIB funziona. Devo, al limite, solo collegarmi 
con SLIB.
 
L'ultima cosa che manca, adesso, è studiarmi il manuale (e le procedure 
della libreria custom AUTIN) per capire come aprire i files dati ed 
eliminare la maggior parte dei records. Non voglio eliminare la 
struttura, ma ridurre la quantità di dati.
Poi, come riduco la dimensione dei files ?
Se hanno allocazione fissa, anche riducendo i dati in essi contenuti non 
si riduce lo spazio occupato sull'unità disco.
Li devo copiare altrove, cancellarli e riscriverli ?
 
A proposito di allocazione fissa.
LIBR di POP, per £LIBRARY mi fornisce la seguente informazione
3724/3725 blocchi su 30000
Vuol dire che per £LIBRARY sono stati allocati sul disco 30000 blocchi e 
sono, in maggioranza, vuoti ?
 


 
Temo di si.
 
In generale gli oggetti di tipo LOAD non sono eseguibili da soli.
Ad esempio se, partendo da un source, crei con il compilatore un programma 
PROG1
verra' salvato in libreria un oggetto di tipo LOAD.
 
Per eseguirlo dovrai anche scrivere una procedura (qualcosa
che molto grossolanamente  assomiglia ai file  .BAT del Dos),
 fatta cosi':
 
// LOAD PROG1
// RUN
 
 
Se chiamerai PROC1 la procedura, scrivendo PROC1 sulla
riga dei comandi ti verra' eseguito il PROG1.
 
I programmi si eseguono solo  tramite  una procedura.
Nel S/36 non esistono gli .EXE o i .COM. direttamente
 eseguibili come  nel DOS...
 
i comandi FILE, LIBR etc della ŁPOPLIB sono essi stessi  procedure
 
Ecco perche', in generale, bisogna associarsi alla libreria
dove il programma e' contenuto, prima di lanciarlo.
 
ciao
fm
 
 

 Dovrebbe bastare...
 
Alla luce di tutto quello che ho scritto sopra, potresti provare a eseguire
POPSAVE (sempre ammesso che da qualche parte ci sia, ma in ŁLIBRARY, non in
ŁPOPLIB), la quale procedura dovrebbe crearti su floppy due file: POP e
POPLIB (senza Ł davanti). A quel punto passi all'altro 5364, fai un TOLIBR
di POP da I1 (cosě ti ritrovi POPLOAD in ŁLIBRARY) e poi vai di POPLOAD.
 
Nel caso piů che probabile in cui tu non abbia POPSAVE in ŁLIBRARY, magari
perché giŕ a suo tempo POP fu installato "alla buona" (e questo me lo fa
pensare la procedura POPLOAD in ŁPOPLIB invece che in ŁLIBRARY e tutto il
resto), quelle che seguono sono le procedure facenti parte di POP che qui ho
qui, nella ŁLIBRARY di SSP 7.5 (escluse quelle per il caricamento e
l'eliminazione di POP stesso) e che tu volendo dovresti ricrearti da te: 
 
DISKETTE  compagna di LIBR e FILE
FILE      vedi sopra
FILEG     generatore di file modello
FSEDIT    full screen editor
FSEDITP   funzione di stampa di FSEDIT
LIBR      compagna di DISKETTE e FILE
POP       visualizza il menů principale
POPPR     di servizio, richiama altre procedure del prodotto
 
N.B. Tutte queste sono diverse dalle equivalenti presenti in ŁPOPLIB: quelle
contengono effettivamente le cose da fare, queste invece contengono piů o
meno tutte solo due righe di questo genere:
 
	// LIBRARY NAME-ŁPOPLIB
	nomeprocedura parametriprocedura
 
Dunque in mancanza di meglio puoi procedere proprio come hai previsto, cioč
facendo il restore della libreria ŁPOPLIB da un sistema all'altro, ma poi
dovresti crearti tu le procedure che mancano in ŁLIBRARY: nonostante tutto
scommetto che la procedura POP che hai sola soletta in ŁLIBRARY e quella che
dovresti avere in ŁPOPLIB sono diverse (e infatti non dovrebbero essere per
niente intercambiabili).
 
In un'installazione corretta, POP in ŁLIBRARY contiene:
 
	// LIBRARY NAME-ŁPOPLIB
	POP
 
Cioč cambia la libreria corrente e richiama la procedura POP che si trova
nella libreria indicata. A sua volta la procedura POP in ŁPOPLIB contiene:
 
	// MENU POP
 
Il che visualizza il menů principale POP. Cioč in ŁLIBRARY c'č quello che
con qualche variante ti ha giustamente suggerito Fm nell'altro messaggio. :)
 
Ultima cosa: secondo il tuo PDF con l'elenco di tutte le immagini che hai,
dovresti averne ben due della ŁPOPLIB; prova a guardare: magari una di
quelle č piů completa di quel che c'č ora installato sul 5364.
 
Ciao,
G.
 

 Devo usare COMPRESS ?
 
Fai un CATALOG e segnati i nomi delle librerie; poi per ogni libreria fai:
 
	CONDENSE nomelibreria
 
Questo richiede che la libreria non sia in uso, quindi prima di farlo per
£LIBRARY devi "spostarti" altrove, per esempio SLIB £CNFGLIB. Dopodiché,
sempre per ogni libreria, ma escludendo £LIBRARY, fai:
 
	ALOCLIBR nomelibreria,,,,DECR
 
Dopodiché infine fai:
 
	COMPRESS
 
Così dovresti guadagnare il massimo spazio possibile senza andare a cambiare
cose dentro CNFIGSSP. A questo punto £POPLIB dovrebbe starci. Sono curioso
di sapere quanto ci impiega il COMPRESS su un 5364 pieno. :P
 
Ciao,
G.
 

 Non esistono frammenti del file concatenati.
 
Che tu sappia è così anche per le librerie? A me pare di aver letto in giro
(su comp.sys.ibm.sys3x.misc) che le librerie potevano anche frammentarsi,
creando delle cosiddette estensioni di libreria che poi in CATALOG si vedono
come registrazioni a parte nella VTOC. Ti risulta qualcosa del genere?
 
Grazie, :-)
G.

 sono, in maggioranza, vuoti ?
 
No, 30mila blocchi è impossibile perché sarebbero 73.2 MB, cioè più della
capacità del disco. Dovrebbe essere qualcosa che si riferisce ai settori
dell'indirizzario della libreria. Settori, non blocchi. Ho letto che a volte
LIBR si sballa un po'. Fai un CONDENSE di £LIBRARY e poi guardaci con
LISTLIBR: all'inizio, dove ti dice quanti floppy ci vogliono per salvarla,
ti dice anche le dimensioni in blocchi e tutto il resto.
 
Il fatto che dica 3724/3725 mi fa pensare che nell'indirizzario sia rimasto
un solo posto libero, quindi anche se la libreria fisicamente ha spazio, non
ce n'è più per registrare nuovi membri. 30mila invece non me lo spiego tanto
facilmente. Sicuro che dicesse "blocchi"? Potrebbero invece essere 30mila
_settori_ utilizzati o disponibili per i membri della libreria...
 
Male che vada un colpetto di ALOCLIBR a £LIBRARY mette a posto tutto. :)
 
Ciao,
G.
 

 dell'indirizzario della libreria.
 
Sono andato a ripescare l'output di un LISTLIBR che avevo in giro, relativo
alla mia ŁLIBRARY (ora non ho voglia di accendere tutto l'ambaradan). Ecco
la prima parte (il maiuscolo č originale, quindi prenditelo cosě):
 
LIBRERIA- ŁLIBRARY     STATO             DATA  14/02/12     ORA   17.37
 
AMPIEZZA IN BLOCCHI DELLA LIBRERIA                    9696
AMPIEZZA IN SETTORI DELL'INDIRIZZARIO                  768
SETTORI USATI DAGLI ELEMENTI DI LIBRERIA             73505
SETTORI DISPONIBILI PER GLI ELEMENTI                 22678
VOCI USATE DELL'INDIRIZZARIO                          2167
VOCI DISPONIBILI IN INDIRIZZARIO                      1667
 
La libreria all'atto pratico č un file su disco, quindi viene allocata in
blocchi, perň poi al suo interno viene gestita per singoli settori.
 
Facciamo due conti.
 
Per quanto riguarda i dati:
 
     9696 blocchi * 10 = 96960 settori (1 blocco = 10 settori)
 
     96960 - 768 = 96192 settori disponibili per i membri
 
     96192 - 73505 settori usati = 22687 settori liberi per i membri
 
Per quanto riguarda le voci di indirizzario:
 
     768 settori * 5 = 3840 voci di indirizzario (5 per ogni settore)
 
     3840 - 2167 voci usate = 1673 voci disponibili
 
Come vedi i conti piů o meno tornano, al netto di alcuni arrotondamenti
interni. Secondo me quel 3724/3725 che tu vedi sono voci di indirizzario
usate e il loro totale (cioč ti rimane solo una voce libera). 30mila invece
come ipotizzavo nell'altro messaggio saranno i settori di libreria occupati
o disponibili o totali per i membri. Lo scopri raffrontando quell'output con
quello di LISTLIBR (o forse c'č anche scritto nell'help).
 
Ciao,
G.
 

 :)
In £POPLIB c'è un solo membro POP, di tipo LOAD.
Allora il POP in £LIBRARY che ho visto nell'altro, era diverso, solo la 
procedura. Vuol dire che cancello POP da £LIBRARY e creo POP come 
procedura. Finito. Poi controllo gli altri dischi con £POPLIB...

 
Il COMPRESS, senza alcun CONDENSE o ALOCLIBR ha impiegato, occhio e 
croce, un minuto, un minuto e mezzo. Mi sono stupito anch'io ...
 
Come ho cancellato il file storico ?
HISTORY e poi help.
S'è aperto il menu ed ho scelto ERASE ALL...
Poi ho scoperto la voce "Lavorare con il file storico" in uno dei 
sottomenu. C'è l'opzione per salvare il file storico in un file di dati :)
 
Tanto spazio non c'era ...
 
 
 
 
 
 
-- 
http://www.supervinx.com/Retrocomputer
 

Quando ho chiamato direttamente POPLOAD, s'è, infatti, accesa la luce del 
floppy drive, ma credo che non gli sarebbe piaciuto quello che c'era, 
visto che era salvata con SAVELIBR...

In altre parole, dovrei copiare POPLOAD in £LIBRARY ed eseguirla.
 
Ma non è lo stesso se eseguo
SLIB £POPLIB ?
Dopo funziona tutto ... sono solo 12 caratteri in più :)


si, ricordo di aver visto nel catalog l'estensione subito sotto la 
libreria... (EXTEND).
 
Poiche' per fare CONDENSE o ALOCLIBR nessuno dei programmi della libreria
doveva essere in uso, l'estensione era l'ultima spiaggia se dovevi
inserire un oggetto  in una libreria di produzione che non aveva spazio.
Ricordo cmq che l'estensione era piccola (50 blocchi ?)  ed era
una sola....quindi poi arrivava comunque l'errore di spazio di libreria
insufficiente (o di voci d'indirizzazio insufficienti, ma questo errore
era relativamente piu' raro).
 
Non ricordo bene ma potrebbe anche essere che se non c'era
spazio contiguo alla libreria, non veniva fatta neppure l'estensione.
 
Sui 5360 c'erano dischi piu' grandi ma spesso in uso da parecchi utenti,
per cui  durante il giorno era impossibile fare  il COMPRESS (macchina 
dedicata)
o il  CONDENSE sulle liberie principali, quindi  usavo una tecnica detta " 
Rilocazione di Scowron" .
 
(Il Sig. Scowron o come si chiamava ...non me ne vorra'  se non ricordo 
esattamente
 il cognome dopo vent'anni).
 
Il COMPRESS poteva essere fatto con un parametro che spostava i files in 
fondo
al disco.
Poi creavo un file o una libreria piuttosto a grossa (diciamo il 10% del 
disco)
 subito dietro la £LIBRARY....poi eseguivo un COMPRESS normale...e poi
cancellavo il file suddetto.
 
Si veniva cosi' a creare un spazio vuoto subito dietro la £LIBRARY,
che aumentava in maniera sensibile  le prestazioni, specialmente se vi erano
frequenti estensioni.
 
 
ciao
fm
 
 
 

Ho rimosso temporaneamente la £POPLIB, ed ho effettuato CONDENSE/ALOCLIBR 
di tre librerie "utente". Poi ho eseguito COMPRESS, guadagnando oltre 200 
blocchi... una miseria ... salendo a circa 933.
Non riesco, però, ad effettuare ALOCLIBR per la libreria più grande 
(AUTIN): occupa, infatti, 3 floppies.
Devo provare a salvare le altre tre liberie su floppy, creare l'immagine 
del floppy e, se tutto è a posto, cancellarle, poi ALOCLIBR di AUTIN e 
rimettere tutto a posto.
Anche se resto convinto che la strada (teorica) migliore fosse quella di 
ridurre i dati nei files utente (cosa che non ho capito bene come fare...)
 
Nei vari menu, ho trovato le opzioni per estendere una libreria...

 Nei vari menu, ho trovato le opzioni per estendere una libreria...
 
Che è poi sempre la procedura ALOCLIBR, la quale ha un parametro che può
essere INCR o DECR, indovina a cosa serve... :)
 
G.

 procedura. Finito. Poi controllo gli altri dischi con ŁPOPLIB...
 
In veritŕ, in un'installazione fatta bene, i membri POP sono _tre_, tutti
diversi: un POP tipo LOAD in ŁPOPLIB, un POP tipo PROC in ŁPOPLIB e un POP
di tipo PROC in ŁLIBRARY.
 
I due POP di tipo PROC sono diversi tra loro: quello in ŁLIBRARY chiama
quello in ŁPOPLIB che a sua volta "chiama" il POP di tipo LOAD.
 
POP in ŁLIBRARY č cosě:
 
	// LIBRARY NAME-ŁPOPLIB
	POP
 
POP in ŁPOPLIB č cosě:
 
	// MENU POP
 
E il POP di tipo LOAD č il file binario del menu POP "chiamato" con // MENU.
Se vuoi, direi che funziona anche una cosa del genere, messa in ŁLIBRARY:
 
	// LIBRARY NAME-ŁPOPLIB
	// MENU POP
 
G.

 sottomenu. C'č l'opzione per salvare il file storico in un file di dati :)
 
Tutto quello che trovi nei menů si puň fare anche con le procedure, o
meglio: tutto quello che trovi nei menů richiama qualche procedura con
qualche apposito parametro. Per esempio, Il salvataggio del file cronologico
si fa anche direttamente con la procedura HISTORY COPYSYS (ci ho appena
guardato e ho visto anche il parametro ERASE che non mi ricordavo).
 
G. :-))

 Dopo funziona tutto ... sono solo 12 caratteri in piů :)
 
Sě, č la stessa cosa, ma se mentre stai trafficando con POP usi anche
qualche procedura che ti cambia la libreria, poi POP rimane stranito perché
non trova piů i suoi pezzi. Avere le procedure di richiamo in ŁLIBRARY ti
garantisce che funzioni sempre tutto.
 
Se fossero directory, ŁLIBRARY sarebbe una directory che č SEMPRE nel path,
mentre le altre non sei mai sicuro che ci siano.
 
G. :)

 frequenti estensioni.
 
Se non sbaglio succedeva qualcosa di simile con gli indici alternativi e il
KEYSORT, ma forse erano cose del 34 che poi nel 36 furono automatizzate, no?
 
Bella idea comunque, mi piace. Quelle cose che oggi non si pensano neppure
piů, tanto č tutto automatico. :)
 
Ciao,
G.
 


Ho l'impressione* che ALOCLIBR riscriva altrove la libreria "ridotta" e 
cancelli la vecchia. Non posso fare ALOCLIBR di AUTIN semplicemente 
perché non c'è spazio a sufficienza. Servono oltre 3 MB... ne ho 2 scarsi.
 
*Certezza: dopo ALOCLIBR, ad esempio, di COGE, lo spazio libero s'è 
frammentato.
 
-- 
http://www.supervinx.com/Retrocomputer
 

 frammentato.
 
In effetti potevo anche ipotizzarlo, però pensavo che sul 36 le cose fossero
un pelo più dinamiche. Quello tutto "bloccato" era il 34... Mah! :)
 
G.


nel '34 se aggiungevi  chiavi fuori sequenza ad un file ad indici, tali 
chiavi non erano
immediatamente leggibili da una SETLL+READ....ma leggibili solo tramite 
CHAIN.
La procedura KEYSORT aveva lo scopo di rimettere in sequenza le chiavi.
 
Per risolvere questo problema, negli ultimi release del 34, furono 
introdotti
i files ad indice ad accesso immediato.
 
La procedura SETFILE serviva per impostare su files gia' esistenti questo 
nuovo attributo.
 
I files ad indici normali mantenevano il problema suddetto anche nel '36.
 
Cmq era buona regola creare i files ad indice  nuovi con l'attributo 
impostato e
usare la SETFILE  per quelli vecchi,  se necessario.
 
 
ciao
fm 
 
 

 G.
 
Funziona ..... parzialmente..:P
 
Nel senso che ti compare il menu ma poi
potrebbero non funzionare le opzioni del menu' stesso.
 
Se vuoi scrivere l'equivalente di
 
SLIB ŁPOPLIB
MENU POP
 
devi scrivere
 
// LIBRARY NAME-ŁPOPLIB, SESSION-YES
// MENU POP,ŁPOPLIB
 
il session-yes rende la libreria cui ti sei associato
permanente per la sessione, ossia rimani associato ad essa
anche DOPO che la procedura e' terminata.
 
ciao
fm 
 
 

 // MENU POP,ŁPOPLIB
 
Che SLIB cambi la libreria con SESSION-YES sono sicuro pure io (ci ho anche
guardato), invece sono molto meno sicuro che la procedura POP originale IBM
in ŁLIBRARY ce l'abbia, anzi sono quasi sicuro del contrario. Ora non ho
modo di guardarci, ma direi proprio che quella che dico io č cosě:
 
   // LIBRARY NAME-ŁPOPLIB
   POP
 
Quindi niente SESSION-YES, e non c'č neppure nella procedura POP richiamata
dentro ŁPOPLIB, dato che quella contiene solo una riga con la sola specifica
// MENU POP. Sai qual č probabilmente il "trucco"? Che un menů richiamato
con // MENU cerca prima nella propria libreria (cioč ŁPOPLIB) anche se non č
la libreria di sessione. Oppure, ipotesi alternativa, le voci di quel menů
(dentro POPŁŁ) sono tutte definite con la libreria "inchiodata" lě.
 
Quando ho tempo e voglia di accendere tutto provo a indagare. :)
 
G.

 impostato e usare la SETFILE  per quelli vecchi,  se necessario.
 
Non sono sicuro di aver capito: intendi dire che anche sulle prime release
del 36 c'era il problema per i file a indici nativi, o c'era solo per i file
migrati dal 34? Cmq immagino che quando introdussero la SETFILE per i file
esistenti, allo stesso modo avranno aggiornato BLDFILE e BLDINDEX per i file
nuovi (e il relativo programma $FBLD), no?
 
Voglio dire, da un certo punto in poi gli indici saranno stati tutti di base
ad accesso immediato (e magari sarà anche stata proprio tolta la possibilità
di farli del vecchio tipo)... giusto?
 
Grazie,
G.
 


Certamente quando e' arrivato l'ambiente 36 dell'AS/400 il problema
non c'era piu'.
Scrivere
BLDFILE FILE01,A,RECORDS,1000,64,,T,1,5,DFILE,NODUPKEY
 
e'  perfettamente identico a scrivere:
 
BLDFILE FILE01,I,RECORDS,1000,64,,T,1,5,DFILE,NODUPKEY
 
tipo I o tipo A ... il file ad indici  e' comunque ad accesso immediato.
La specifica SETFILE nelle OCL, se presente, viene ignorata,
idem il parametro IFILE nella // FILE NAME .
Se lanci la KEYSORT ti dice  procedura in esecuzione ma penso
sia del tutto  inutile.
 
Quando e a quale release del 36 sia intervenuto il cambiamento
a memoria non saprei dirlo.
 
Bisogna riaccendere un 36....:-)
 
S.E. & O.
 
 
ciao
fm